gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 08:25:54 24 4
gpt4 key购买 nike

我正在使用 JavaScript,我有一个关于正则表达式的问题。我还没有找到我要问的确切内容,所以在这里。

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

我知道可以通过类似的方式将长正则表达式拆分成更小的正则表达式(并且这种方式确实有效)

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');

只使用字符串

但是当我执行例如 pattern.test(myString) 时,我收到一个错误消息,指出正则表达式无效。

也许我忘了逃脱我的 Angular 色之一?或者不能只使用字符串?

最佳答案

您需要双转义而不是单转义,即您必须使用 2 个斜杠。

此外,您不必在 RegExp 函数的开头和结尾添加 /

const pattern = new RegExp(`/^${patternOne}${patternTwo}$/`, 'i');
^^ ^^ -> remove those

会自动添加

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

const pattern = new RegExp("^" + patternOne + patternTwo + "$", 'i');
console.log(pattern);

关于javascript - 如何连接字符串以构建正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45641512/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com