2011-05-12 7 views
0

この正規表現がうまくいくまでには苦労しています。私はこれまでで持っパターン:JavaScriptの問題正規表現

var dollarPattern = /^\d{1,}|\s\d/gi; 

var matchedResults = new Array(); 
matchedResults = textValue.match(dollarPattern); 

私は何を達成するために期待していますが、「2.99から2(63項目)」の例の文字列を使用しているが、私はそれが数字で始まる場合、またはいずれかのかどうかを確認したいです空白文字とそれに続く数字が含まれています(この場合、両方の条件が真です)。しかし、私はFirefoxで "matchedResults is null"というエラーが出ています(ただし、長さは2です)。

私が間違っていることは何ですか?ありがとう...

+3

そのコードの何がほかにありますか? –

+0

'{1、}'は '+'と等価です。これにより、少し短くて読みやすくなります。 – stema

答えて

2

あなたが必要なのはエスケープすることだけです。

// Please note that this works, but @Lekensteyn pointed out that this uses string literals 
// Also, this will give you the first match(if exists) only. 
alert("2 to 3.99 (63 items)".match("^\\d\|\\s\\d")); 

OR

// This one will give you all possible matches 
alert("2 to 3.99 (63 items)".match(/^\d|\s\d/g)); 
+0

あなたはREを理解していますか?正規表現リテラルの代わりに文字列リテラルを使用する必要はありません。 – Lekensteyn

+0

@Lekensteynいいえ、100%ではありません。私はそれが働いたので答えを掲載しました。 「必要性」はありませんが、それは使用できないという意味ではなく、使用すると機能しません。あなたのコメントの後、私はJavascript REの基礎を検索し、答えを修正しました。とにかく、私の最初のdownvoteに感謝します。 :-) – Lobo

0
クロム、FF4、およびIE8では正常に動作

正規表現の前後に引用符を入れるとnullになります。

しかし、出力は「2、2」になります。