我知道這可能是相當直接的,但似乎無法找到我想要做的一個示例。Javascript - 正則表達式 - 使用Not運算符
匹配從一個字符串開始,我想匹配建築物號碼。
即
60將匹配60A和60而不是6000
同樣
1將匹配1和1ABC而不是11
/^1[^\0-9]*
就像是我所需要的,任何次數匹配1和任何非數值。 (當然這是從快報 - (.NET),但它並沒有在那裏工作
任何人可以點我在正確的方向
感謝,
山姆
我知道這可能是相當直接的,但似乎無法找到我想要做的一個示例。Javascript - 正則表達式 - 使用Not運算符
匹配從一個字符串開始,我想匹配建築物號碼。
即
60將匹配60A和60而不是6000
同樣
1將匹配1和1ABC而不是11
/^1[^\0-9]*
就像是我所需要的,任何次數匹配1和任何非數值。 (當然這是從快報 - (.NET),但它並沒有在那裏工作
任何人可以點我在正確的方向
感謝,
山姆
\0
意味着別的
/^1[^0-9]*/
0-9
相同\d
/^1[^\d]*/
/^ 1 [^ \ d] * $ /爲我做了。謝謝! – sambomartin 2012-03-07 16:19:38
你可以?使用正則表達式/^1(?!\d)/
匹配建設1.
的(?!\d)
是一種消極的前瞻,並說「比賽1,只要它不跟另一個號碼」。
例如
myString.match(/^1(?!\d)/)
感謝回覆,但不匹配1A?我發現^ 1 [^ \ d] * $是我尋找的解決方案 – sambomartin 2012-03-07 16:19:25
如果我理解正確,你要問什麼,你可以這樣做:
function parseLeadingDigits(str) {
var matches = str.match(/^\d+/);
if (matches) {
return ({num: parseInt(matches[0], 10), valid: true});
}
return ({num: 0, valid: false});
}
function compareLeadingDigits(str1, str2) {
var data1 = parseLeadingDigits(str1);
var data2 = parseLeadingDigits(str2);
return(data1.valid && data2.valid && (data1.num == data2.num));
}
或者,它可能沒有轉化爲實際的數字是這樣做:
function parseLeadingDigits(str) {
var matches = str.match(/^\d+/);
if (matches) {
return(matches[0]);
}
return("");
}
function compareLeadingDigits(str1, str2) {
var result1 = parseLeadingDigits(str1);
var result2 = parseLeadingDigits(str2);
return(result1 == result2 && result1 != "");
}
例子:
compareLeadingDigits("60", "6000"); // false
compareLeadingDigits("60", "60A"); // true
compareLeadingDigits("60", "60"); // true
compareLeadingDigits("1", "1"); // true
compareLeadingDigits("1", "1ABC"); // true
compareLeadingDigits("60", "A60"); // false
如果你想要把一個變量的正則表達式,你可以這樣做:
var number = 60;
var re = new RegExp("^"+number+"(?!\\d)");
'60'.match(re); // => ["60"]
'60A'.match(re); // => ["60"]
'600 '.match(re); // => null
'a60A'.match(re); // => null
我覺得你不需要第一個吧'/' – rcdmk 2012-03-07 00:24:14
顯示一些示例字符串匹配 – 2012-03-07 00:26:54