2011-03-29 47 views

回答

35

因爲變量regex是一個字符串的轉義序列\.只是.,它匹配任何字符(除了換行)。如果您更改正則表達式的定義以使用RegExp文字語法或轉義轉義字符(\\.),那麼它將按預期工作。

var dot = '12.2' 
    , comma = '12,2' 
    , regex = /^[0-9]+\.?[0-9]*$/; 
     // or '^[0-9]+\\.?[0-9]*$' 
alert(dot.match(regex)); 
alert(comma.match(regex)); 
2

,你需要逃跑的斜線。

regex = '^[0-9]+\\.?[0-9]*$';

8

你確定你不需要逃避反斜槓嗎?它是在一個字符串,你知道...

regex = /^[0-9]+\.?[0-9]*$/ 

regex = "^[0-9]+\\.?[0-9]*$" 

其實,我建議你寫這樣說:

regex = /^\d+(\.\d+)?$/ 
0

你的正則表達式應該是

regex = /^[0-9]+\.?[0-9]*$/; 

查詢https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/regexp爲了正確的語法。

+0

嗨@Cristian,你可以添加一個concat變量到表達式嗎? – inane 2017-01-05 15:34:27

+0

@inane我不知道你的意思:) – 2017-01-06 09:00:32

+0

好吧..我需要驗證輸入只有數字和十進制符號(這個字段是動態的,取決於國家) – inane 2017-01-06 13:58:49

相關問題