背景)下面的正则表达式模式看起来很长,但其中大部分由重复模式组成。
这个范围使用了3次,
[a-zA-Z0-9&+".;!'|?(),~[{}<>_:`*#\/\-\^\]\\]
var repeatingPattern = /^[a-zA-Z0-9&+".;!'|?(),~[{}<>_:`*#\/\-\^\]\\](( [a-zA-Z0-9&+".;!'|?(),~[{}<>_:`*#\/\-\^\]\\])|([a-zA-Z0-9&+".;!'|?(),~[{}<>_:`*#\/\-\^\]\\]))/
该正则表达式的英文翻译是:
- 第一个字符必须在范围内。
- 第二个字符必须是一个空格,后跟该范围内的一个字符。
- 或者第二个字符必须是该范围内的字符。
问题)我多次写了这个范围,有没有办法用速记或其他技术来做到这一点?
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(使用前将#替换为@)