[英]Strict Regex Validation on an input string
我對輸入字符串進行了快速的正則表達式驗證。
這是我試圖實現的示例字符串格式: ABC=10:1;
我目前擁有的: var reg = new RegExp('(([AWT]\\w\\S=)?(\\d{0,9}:)?(\\d{0,9});)');
使用上面的正則表達式,我可以獲得字符串,但是所有這些字符串也被接受了......
ABC=
ABC=a:a;
ABC=#:#;
我需要什么: Three letter string = Any number(0-9): Any number(0-9);
不可接受的標准(如上面的示例)
equals sign
和冒號之后的任何非數字都應該被認為是不可接受的。
分號之后的任何內容。
三個字母字符串之前的任何內容。
任何幫助,將不勝感激!
謝謝你。
更新
根據下面的答案, "^[a-zA-Z]{3}=\d+:\d+;$"
工作得很好,但是當我用我的代碼測試它時,它是無效的。
這是代碼:
var reg = new RegExp("^[a-zA-Z]{3}=\d+:\d+;$");
var x = $('td').find('input')[7].value;
console.log(x); // AWT=10:15;
if (!x.match(reg)) {
return [false, "Stop"];
console.log("Invalid");
} else {
return [true, 'Success'];
console.log("Valid");
}
即使我測試了正則表達式,上面的代碼總是吐出Invalid 。
我不知道這里有什么問題。
看起來您的正則表達式可以簡化為:
"^[a-zA-Z]{3}=\d+:\d+;$"
在哪里:
^
和$
- 行的開頭和結尾[a-zA-Z]
- 范圍內的任何字符(在這種情況下為拉丁字符){3}
- 前面符號的確切數量(在這種情況下為 3 個任意拉丁字符)\d
- 任何數字+
- 重復最后一個符號一次或多次=:;
在這種情況下不必逃脫 UPD:如果您只需要冒號前的一位數和冒號后的一位數,那么您不應該使用+
符號,就像在 Cary Swoveland 評論中一樣。 但是,根據這個例子,這里可能有任意長度的數字
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.