试图在javascript中使用某个字母后跟任意数字进行正则表达式匹配

时间:2017-05-10 14:30:33

标签: javascript regex

我试图让正则表达式起作用,但事实并非如此。它必须是一件小事,但我可以使用一些帮助。我尝试在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!");
}

有人可以告诉我,我做错了吗?我是正则表达式的新手。

1 个答案:

答案 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#matchRegExp#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");
}