Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在动态RegExp中处理令牌字符?_Javascript_Regex - Fatal编程技术网

Javascript 如何在动态RegExp中处理令牌字符?

Javascript 如何在动态RegExp中处理令牌字符?,javascript,regex,Javascript,Regex,好的,假设我有一个前缀列表,我想在RegExp中使用,它看起来像这样: const前缀=[“*”、“|”、“^”]; const prefixDetector=new RegExp(`^${prefixes.join('|')}`,'gmi'); 这很好,但唯一的问题是我的RegExp结果如下: const regex=/^*| | | ^/gmi //出了什么问题:“| | |”将搜索空白字符,也称为”。 应该是这样的 const regex=/^\*\\\\\\\\\^/gmi //期望

好的,假设我有一个前缀列表,我想在
RegExp
中使用,它看起来像这样:

const前缀=[“*”、“|”、“^”];
const prefixDetector=new RegExp(`^${prefixes.join('|')}`,'gmi');
这很好,但唯一的问题是我的
RegExp
结果如下:

const regex=/^*| | | ^/gmi
//出了什么问题:“| | |”将搜索空白字符,也称为”。
应该是这样的

const regex=/^\*\\\\\\\\\^/gmi
//期望
我可以使用如下代码:

。。。
const prefixDetector=new RegExp(`^\\${prefixes.join('\\\')}`,'gmi');
假设结果与上面的代码相同,但当我添加如下前缀时:

const前缀=['*'、'|'、'^'、'b'、's'];
我会得到这样的结果:

const regex=/^\*\\\\\\\\\^\b\\\s/gmi
//错误:它是正确的,但是“\b”和“\s”是Javascript中的正则表达式标记。
请记住,
\b
\s
用于单词边界和空白字符

我想在这里得到的是匹配前缀,前缀可以超过1个字符,并且可以自定义,所以像
/[%%]/gmi
这样的东西不会剪切它,因为它只处理1个字符

因此,这就像:

const前缀=['%%','b','percentage','percent'];
常量RegExp=newregexp(“…?”,“gmi”);
//在“%%afterprefix”或“percentthing”之类的对象上测试RegExp;

为了防止
Regex
解释那些具有特殊意义的字符,您必须在数组中转义它

例如
[“\\s”、“\\b”、“\\\\”、“\\\^”]