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