2010-10-21 61 views
2

在Ruby中,我經常用這樣的:正則表達式測試,結果存儲在javascript

if "my string123" =~ /string(\d+)/ 
    puts "I got #{$1}" 
end 

我怎麼會做在JavaScript類似的東西?目前,我一直在這樣做,但感覺很髒。或許我應該忍受這一點,但我想我會問是否有一個我失蹤的語法subtelty。我不知道,謝謝!

+1

不,這是正確的。 ruby方式應該感覺髒,因爲它增加了一個你必須理解的隱藏/額外的語法。 JS的方式是純粹的功能。 – slebetman 2010-10-21 05:12:43

+0

應該注意的是,如果你只想獲得沒有完全匹配的捕獲部分,那麼你可以使用全局匹配:'/ regexp/g'。然後你的比賽將以'm [0]'返回。 – slebetman 2010-10-21 05:14:22

+0

如果這是你第一次使用'm',它應該有'var'關鍵字:'var m = ...;'。另外,我不認爲JavaScript有'puts'。 – Kobi 2010-10-21 05:14:31

回答

1

你不會錯過任何東西。
如果m已被定義爲,那麼您可以做if(m = "string".match(/regex/)),但無論如何這不太乾淨,並且您不能將它用於var

+0

反正'var'有多重要?我曾經不使用它,它似乎在所有瀏覽器中都正常工作? :) – Kevin 2010-10-22 17:43:33

+0

@凱文 - 謝謝。至於'var',它可能非常重要:http://stackoverflow.com/search?q=javascript+var – Kobi 2010-10-22 21:49:51

0

這僅僅是在文本測試表達式的外觀:


    var a = "my string123"; //or given as data.. 
    var b = /string(\d+)/; 
    if (b.test(a)) alert("found some digits inside"); 

這是用於獲取匹配的數組:


var str = "Watch out for the rock!".match(/r?or?/g); 

STR於是包含[ 「o」,「or」,「ro」]