我试图让正则表达式起作用,但事实并非如此。它必须是一件小事,但我可以使用一些帮助。我尝试在https://regex101.com/使用正则表达式测试程序,它说我做得不对,但它不能在我的代码中工作。
我想查看一个字符串,看看是否匹配:
空格字母v或V没有0到9空格字母t之间的空格数或T 0到9空格之间没有空格数
示例:" v5 t2"或" V5 T2"
这里是javascript / jquery:
if (mystring.indexOf(/v[0-9] t[0-9]/i) > -1) {
console.log("found!");
} else {
console.log("not found!");
}
有人可以告诉我,我做错了吗?我是正则表达式的新手。
答案 0 :(得分:3)
indexOf
不接受正则表达式,它接受一个字符串。所以你的正则表达式被转换为字符串,然后不匹配。
如果您想查看匹配项,请使用RegExp#test
:
if (/v[0-9] t[0-9]/i.test(mystring)) {
// Yes
} else {
// No
}
请注意,查看字符串中的任何位置。
另请注意,[0-9]
为\d
,因此正则表达式可能为/v\d t\d/i
。
var mystring = "foo V5 T7 bar";
if (/v\d t\d/i.test(mystring)) {
console.log("found!");
} else {
console.log("not found!");
}

如果您需要知道匹配发生的 ,请改用String#match
或RegExp#exec
,然后查看结果的index
属性:
var mystring = "foo V5 T7 bar";
var match = /v\d t\d/i.exec(mystring);
if (match) {
console.log("Found at " + match.index);
} else {
console.log("Not found");
}