【发布时间】:2018-02-09 21:59:18
【问题描述】:
我正在使用nodejs v8.9.4 和typescript v2.6.2。我想构建一个Regexp,它可以像(?i) 和(?-i) modifier spans 一样打开和关闭区分大小写,例如在.NET 环境中。
我想完成类似的事情:
let value = 'HelloWorld';
let pattern = '(?i)\\b(' + value + ')\\:|' +
'(?-i)\\b(' + value.toUpperCase() + '|' + value + ')\\b';
let myRegex = new RegExp(pattern, 'g');
myRegex.test('helloworld'); // returns false
myRegex.test('helloworld:'); // returns true
myRegex.test('HELLOWORLD'); // returns true
myRegex.test('HelloWorld'); // returns true
很遗憾 javaScript 不支持修饰符跨度。
所以我想问有没有办法在 javaScript 中构建 Rexep,就像上面示例中的 myRegex,其中 value 是可分配/可交换的。
欢迎任何提示,提前致谢。
【问题讨论】:
-
这就是你要使用它的实际方式吗?有那个特定的模式?
-
是的,我想使用那个特定的模式。
-
那你能做两个
RegExps吗?一个带有第一部分和'gi',一个带有第二部分和'g',a.test(input) || b.test(input)? -
一般来说这是可行的。就我而言,我会经常调用该正则表达式(每分钟最多> 60次)并评估其
index以更新文档是否已更改。所以我认为由于性能问题,一个单一的正则表达式将是更可取的方法。 -
即使
XRegExp也无法处理这个问题。所以没有单行正则表达式解决方案。
标签: javascript node.js regex typescript