基本上我试图在Javascript中编写一个查找某个字符串的正则表达式,但如果该字符串包含数字,我不希望它匹配。这很难解释,所以exmaple会更好。
字符串:
Blah等等等等
Blah 233 blah
匹配:Blah blah blah
不匹配:Blah 233 blah
我已经尝试过消极的前瞻,以及让其发挥作用的其他方法,但由于我对正则表达式缺乏经验,因此我无法理解它是如何工作的。
答案 0 :(得分:2)
您可以使用以下表达式匹配每一行:
var re = /^\D*$/mg,
line;
while ((line = re.exec(str)) !== null) {
console.log(line);
}
表达式匹配一行,其中所有字符都不是数字; /m
修饰符使^
和$
分别匹配每行的开头和结尾(与整个主题相对)。
答案 1 :(得分:0)
就够了:
js> s = "ao123eu";
"ao123eu"
js> if (s.match(/\d/) === null) { print("has no number"); } else { print("has number") }
has number
js> s = "aoeu";
"aoeu"
js> if (s.match(/\d/) === null) { print("has no number"); } else { print("has number") }
has no number
所有我正在做的,是在\d
匹配字符串中恰好出现一次的任何数字。
你可以把它变成一个功能:
function has_number(s) {
return s.match(/\d/) !== null;
}
如果字符串中有数字,则返回true。
现在,如果你想进行替换,你可以这样做:
function remove_numbers(s) {
return s.replace(/\d+/g, "\\_o<")
}
给出:
js> print(remove_numbers("ao234u 42 ao1234eu"))
ao\_o<u \_o< ao\_o<eu