鉴于用户输入的字符串具有未知的正则表达式,我想获得第一个特殊正则表达式字符的索引。 (对于我的用例,字符串将是一个路径。)
示例:
foo/*/bar
- > 4
foo?/*/*/
- > 3
foofoo+?/**/
- > 6
答案 0 :(得分:3)
你可以按照下面的内容做点什么。只需更新函数即可包含您想要查找索引的每个字符。下面应该与您给出的示例相匹配,并返回正确的值。
var match = /[*?+^${}[\]().|\\]/.exec("foo/*bar");
if (match) {
console.log(match.index);
}
答案 1 :(得分:0)
要在正则表达式中包含具有特殊含义的所有字符,它可能最终会看起来像这样:
var re = /[.*+?^${}()|[\]\\]/;
var match = re.exec('foo/*/bar');
if (match) {
console.log(match.index);
}
表达式本身借鉴了MDN的文档,介绍如何转义要在正则表达式中使用的文字字符串输入。
答案 2 :(得分:0)
.search
这是.search
的用途:
var index = "Foo/*/bar".search(/[*?+^${}[\]().|\\]/);
您可以使用RegExp函数的.index
属性:
var index = ("Foo/*/bar".match(/[*?+^${}[\]().|\\]/) || {}).index