簡體   English   中英

Javascript Regex - 9個字符長,以'SO-'開頭,以6個數字結尾

[英]Javascript Regex - 9 chars long, starting with 'SO-' and ending with 6 numbers

正則表達式在我的腦海中簡直是邪惡的,無論我多少次閱讀任何文檔,我似乎無法掌握甚至最簡單的表達!

我正在嘗試編寫一個非常簡單的表達式來查詢javascript中的變量,但我無法讓它正常工作。

我想驗證以下內容: -

字符串長度必須為9個字符,以SO-開頭(不區分大小寫,例如So-,so-,sO-和SO-),后跟6個數字。

所以以下都應該匹配

SO-123456,So-123456,sO-456789,so-789123

但以下情況應該失敗

SO-12d456,SO-1234567

等等

到目前為止,我只能做到這一點

var _reg = /(SO-)\d{6}/i;

var _tests = new Array();
_tests[0] = "So-123456";
_tests[1] = "SO-123456";
_tests[2] = "sO-456789";
_tests[3] = "so-789123";
_tests[4] = "QR-123456";
_tests[5] = "SO-1234567";
_tests[6] = "SO-45k789";

for(var i = 0; i < _tests.length; i++){
  var _matches = _tests[i].match(_reg);
  if(_matches && _matches.length > 0)
     $('#matches').append(i+'. '+_matches[0] + '<br/>');
}

有關上面的示例,請參閱http://jsfiddle.net/TzHKd/

測試編號5是匹配的,但它應該失敗,因為有7個數字而不是6。

任何幫助將不勝感激。

干杯

請改用此正則表達式

/^(so-)\d{6}$/i;

如果沒有^ (以字母開頭的字符串)或$ (以字符串結尾 ),你正在尋找一個通用的子字符串匹配(這就是為什么當你有7位數時你的regexp返回true)。

通過使用錨點^$ (分別匹配行和行尾的開頭),可以使正則表達式匹配整行。 否則,只要正則表達式中的字符匹配,匹配就返回true。

所以,你會像這樣應用它:

var _reg = /^(so-)\d{6}$/i;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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