可以通过速记或其他技术来减少包含重复模式的正则表达式吗?

2024-03-07

背景)下面的正则表达式模式看起来很长,但其中大部分由重复模式组成。

这个范围使用了3次,

[a-zA-Z0-9&+".;!'|?(),~[{}<>_:`*#\/\-\^\]\\]   
var repeatingPattern = /^[a-zA-Z0-9&+".;!'|?(),~[{}<>_:`*#\/\-\^\]\\](( [a-zA-Z0-9&+".;!'|?(),~[{}<>_:`*#\/\-\^\]\\])|([a-zA-Z0-9&+".;!'|?(),~[{}<>_:`*#\/\-\^\]\\]))/

该正则表达式的英文翻译是:

  1. 第一个字符必须在范围内。
  2. 第二个字符必须是一个空格,后跟该范围内的一个字符。
  3. 或者第二个字符必须是该范围内的字符。

问题)我多次写了这个范围,有没有办法用速记或其他技术来做到这一点?


JavaScriptRegExp不支持正则表达式子例程 https://www.regular-expressions.info/subroutine.html,所以你不能 - 在 JavaScript 正则表达式中 - 定义一个模式并引用相同的模式pattern来自同一个正则表达式。

为什么不使用RegExp构造函数和字符串?

In ES6:

const pattern = '[a-zA-Z0-9&+".;!\'|?(),~[{}<>_:`*#\/\-\^\]\\]';
const regex = new RegExp(`^${pattern}((${pattern})|(${pattern})`);

(我假设我在构造函数中正确匹配了模式!我可能在这里或那里错过了一个字符。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

可以通过速记或其他技术来减少包含重复模式的正则表达式吗? 的相关文章

随机推荐