爲什麼這個正則表達式'^[0-9]+\.?[0-9]*$'
匹配12.2和12,2?正則表達式javascript,爲什麼點和逗號匹配爲
var dot = '12.2',
comma = '12,2',
regex = '^[0-9]+\.?[0-9]*$';
alert(dot.match(regex));
alert(comma.match(regex));
雖然自從你寫你的正則表達式中的字符串適用於regexpal.com
爲什麼這個正則表達式'^[0-9]+\.?[0-9]*$'
匹配12.2和12,2?正則表達式javascript,爲什麼點和逗號匹配爲
var dot = '12.2',
comma = '12,2',
regex = '^[0-9]+\.?[0-9]*$';
alert(dot.match(regex));
alert(comma.match(regex));
雖然自從你寫你的正則表達式中的字符串適用於regexpal.com
因爲變量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));
,你需要逃跑的斜線。
regex = '^[0-9]+\\.?[0-9]*$';
你確定你不需要逃避反斜槓嗎?它是在一個字符串,你知道...
regex = /^[0-9]+\.?[0-9]*$/
或
regex = "^[0-9]+\\.?[0-9]*$"
其實,我建議你寫這樣說:
regex = /^\d+(\.\d+)?$/
你的正則表達式應該是
regex = /^[0-9]+\.?[0-9]*$/;
查詢https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/regexp爲了正確的語法。
嗨@Cristian,你可以添加一個concat變量到表達式嗎? – inane 2017-01-05 15:34:27
@inane我不知道你的意思:) – 2017-01-06 09:00:32
好吧..我需要驗證輸入只有數字和十進制符號(這個字段是動態的,取決於國家) – inane 2017-01-06 13:58:49