2015-11-06 58 views
-4

我目前正在使用輸入驗證器,並且遇到了正則表達式的問題。用於float的正則表達式允許負數和單數。和 -

每次文本更改時,都會測試正則表達式,如果失敗,最後一次更改將被忽略。

我需要標準的數字,int和float。正面和負面以及單一的「。」和單個「 - 」。 空字符串也應該有效。

我創建這個撥弄我的有效和無效的情況: https://jsfiddle.net/rrjfkjvz/1/

var regex = /[-+]?\d*\.?\d*/; 

console.log("ok"); 
console.log(regex.test("")); 
console.log(regex.test(".")); 
console.log(regex.test(".1")); 
console.log(regex.test("1.1")); 
console.log(regex.test("-")); 
console.log(regex.test("-1")); 
console.log(regex.test("0")); 
console.log(regex.test("1")); 
console.log(regex.test("-.")); 
console.log(regex.test("-.1")); 
console.log(regex.test("-1.")); 
console.log(regex.test("-1.1")); 

console.log("fail"); 
console.log(regex.test("..")); 
console.log(regex.test("--")); 
console.log(regex.test("-1-")); 
console.log(regex.test(".1.")); 
console.log(regex.test("a")); 
console.log(regex.test("_")); 
console.log(regex.test("?")); 
+1

'/ [ - +]?\ d * \。\ d * /' – Tushar

+1

您可以將正在使用的正則表達式添加到問題內容中嗎? –

+0

@Tushar不匹配'-'。 – Biffen

回答

1

根據您在的jsfiddle提供什麼,你只需要稍微修改它。

我將你的正則表達式從/[-+]?\d*\.?\d*/更改爲/^[-+]?\d*\.?\d*$/。使用新的正則表達式,它會通過你提供的所有通過的測試(並且失敗所有標記爲失敗的測試)。

我做的唯一的事情就是添加^$來指定我們希望它匹配提供的整個字符串(從頭到尾)。

在你的正則表達式版本中,它正在做更多的包含而不是等號。它只是試圖匹配字符串中的正則表達式模式,不管字符串中是否有未使用的字符。

+0

我完全忘記了開始和結束參數。我對正則表達式很陌生,所以並不是所有東西都是水晶的。非常感謝! :) –

相關問題