簡體   English   中英

對輸入字符串進行嚴格的正則表達式驗證

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM