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

Javascript: Get index of first special regex character in a string

给定一个包含未知正则表达式的用户输入字符串,我想获取第一个特殊正则表达式字符的索引。 (对于我的用例,该字符串将是一个路径。)

示例:

foo/*/bar -> 4

foo?/*/*/ -> 3

foofoo+?/**/ -> 6

您可以按照以下内容进行操作。只需更新函数以包含您要查找其索引的每个字符。下面应该匹配您给出的示例和 return 正确的值。

var match = /[*?+^${}[\]().|\]/.exec("foo/*bar");
if (match) {
    console.log(match.index);
}

要在正则表达式中包含所有具有特殊含义的字符,它最终可能看起来像这样:

var re = /[.*+?^${}()|[\]\]/;
var match = re.exec('foo/*/bar');

if (match) {
    console.log(match.index);
}

表达式本身是从 MDN 关于如何转义要在正则表达式中使用的文字字符串输入的文档中借用的。

.search

这就是 .search 的用途:

var index = "Foo/*/bar".search(/[*?+^${}[\]().|\]/);

正则表达式

您可以使用 RegExp 函数的 .index 属性:

var index = ("Foo/*/bar".match(/[*?+^${}[\]().|\]/) || {}).index