如何连接字符串以构建正则表达式?

时间:2017-08-11 18:16:18

标签: javascript regex

我使用JavaScript而且我对正则表达式有疑问。我还没有找到我在这里问的确切内容。

我有一个超长正则表达式,我想将它拆分成一堆更小的字符串,以明确正则表达式验证的内容。

我知道可以通过做类似的事情将长正则表达式拆分为较小的正则表达式(这种方法实际上有效)

$(document).ready( function() {

  // functions and stuff that alter form fields
  // such as passing a parameter to a hidden field

});

但我想省略const patternOne = /(\w+:{0,1}\w*@)?/; const patternTwo = /([a-zA-Z0-9.-]+)/; const pattern = new RegExp(`^${patternOne.source}${patternTwo.source}$`, 'i'); 并做一些更简单的事情,比如

.source

只使用字符串

但是当我这样做const patternOne = '(\w+:{0,1}\w*@)?'; const patternTwo = '([a-zA-Z0-9.-]+)'; const pattern = new RegExp(`/^${patternOne}${patternTwo}$/`, 'i'); 时,我得到一个错误,表明正则表达式无效。

也许我忘了逃避我的一个角色?或者不可能只使用字符串?

1 个答案:

答案 0 :(得分:0)

您最接近的代码解决方案是:

const patternOne = String.raw`(\w+:{0,1}\w*@)?`;
const patternTwo = String.raw`([a-zA-Z0-9.-]+)`;

const pattern = new RegExp(`^${patternOne}${patternTwo}$`, 'i');