多行格式化的 JavaScript 正则表达式 [重复]

Posted

技术标签:

【中文标题】多行格式化的 JavaScript 正则表达式 [重复]【英文标题】:JavaScript Regex formatted on multiple lines [duplicate] 【发布时间】:2013-04-28 02:51:48 【问题描述】:

我有一个非常复杂的 javascript 替换正则表达式函数,我想知道有没有办法像这样在多行上格式化正则表达式代码:

/ ( ([0-9]1,2) (\/|\.) ([0-9]1,2) (\/|\.) ([0-9]2,4)\s )? ([0-9]1,2) : ([0-9]1,2) ( (:|\s) ([0-9]1,2) )? /ig

另外我想问一下是否有另一种格式化正则表达式的方法,这样更容易阅读。

【问题讨论】:

Regex 几乎是只写的。最好的解决方案可能是将其与解释一起放在实际正则表达式上方的注释中。 【参考方案1】:

JavaScript 不支持 /x 标志(允许使用空格和 cmets),但您可以使用字符串将表达式拆分为多行。例如:

var re = new RegExp(
     "foo" +
     "bar" +
     "baz",
     "ig");

当然,这有正则表达式的常规字符串引用(双重转义)的缺点。

您也可以使用带有 (?x) 标志的 XRegExp,但您仍然受到常规 JS 字符串引用的限制。

【讨论】:

从未想过这样的解决方案。看起来很有趣! 确实,当我有“\”字符用于转义时,它必须是双倍的:"\\s" + "([0-9])"【参考方案2】:
myPatter = new RegExp(
     '([0-9]1,2)'   +
     '.... a new line' +
     '... anotherline'
);

【讨论】:

@IvanDokov Qtax 有一个更好的主意,我愚蠢地把数组弄得太复杂了,然后加入! (这里很晚)

以上是关于多行格式化的 JavaScript 正则表达式 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 在多行字符串上使用正则表达式

如何在多行上使用 JavaScript 正则表达式?

javascript 正则表达式的使用

JavaScript 正则表达式详细分析

Python 3 正则表达式查找多行注释

多行正则表达式