好吧,假设我有一个前缀列表,我想在RegExp
中使用,看起来像这样:
const prefixes = ["*","|","^"];
const prefixDetector = new RegExp(`^${prefixes.join('|')}`, 'gmi');
这很好,但唯一的问题是我的RegExp
是这样的:
const regex = /^*|||^/gmi
//What Went Wrong: "|||" will search for blank characters, A.K.A "".
结果应该是这样的。
const regex = /^*|||^/gmi
//Expected
我可以使用如下代码:
...
const prefixDetector = new RegExp(`^\${prefixes.join('|\')}`, 'gmi');
假设它会显示为上面的代码,但当我添加这样的前缀时:
const prefixes = ['*','|','^','b','s'];
我会得到这样的东西:
const regex = /^*|||^|b|s/gmi
//What Went Wrong: It is correct, but "b" and "s" are Regex tokens in Javascript.
请记住,b
和s
用于单词边界和空白字符。
我在这里尝试的是匹配前缀,前缀可以长于1个字符,并且可以自定义,所以像/[%%]/gmi
这样的东西不会剪切它,因为它只处理1个字符。
所以它会像:
const prefixes = ['%%', 'b', 'percentage', 'percent'];
const RegExp = new RegExp('...?', 'gmi');
//test RegExp on something like "%%afterprefix" or "percentthing";
为了防止Regex
解释那些具有特殊含义的字符,您必须在数组中对其进行转义。
例如["\s", "\b", "\|", "\^"]