Javascript:获取字符串中第一个特殊正则表达式字符的索引

时间:2015-08-06 01:12:50

标签: javascript regex path wildcard glob

鉴于用户输入的字符串具有未知的正则表达式,我想获得第一个特殊正则表达式字符的索引。 (对于我的用例,字符串将是一个路径。)

示例:

foo/*/bar - > 4

foo?/*/*/ - > 3

foofoo+?/**/ - > 6

3 个答案:

答案 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