如何将此正则表达式行分成几行? [复制]

Posted

技术标签:

【中文标题】如何将此正则表达式行分成几行? [复制]【英文标题】:How to split this regexp line into several? [duplicate] 【发布时间】:2018-08-25 22:32:41 【问题描述】:

使用过搜索,但真的不明白如何将这个长正则表达式拆分为几个更短的:

var isMobile = /android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);

【问题讨论】:

你的“几个较短的”正则表达式会做什么? 使用 RegExp 构造函数并构建您的字符串,例如从带有.join("|") 或任何你想要的方式的数组中。 请问您何时需要将正则表达式拆分为几个较短的正则表达式,如果这个有效?这对我来说似乎不合逻辑,但你可能有你的理由...... 通常人们会问如何将它们合二为一......你想做什么来打破它?目的是什么?较小的会做什么?目前还不清楚你想要什么,特别是因为这是一个包含大量 ors 的基本 reg exp。 这很容易解释。这段代码工作得很好,但我尽量保持我的代码结构化,而且那行太长而且不适合屏幕。实际上,我不理解该代码,我从互联网上的另一个解决方案中获取了它,它对我来说非常有效。如果我明白我当然会使用构造函数或 smt else。我只想要这样的东西: var x = qwerty'\n'dfdfuiopl;但是串联不起作用。 【参考方案1】:

您的正则表达式非常好。但是,如果您想将其分解为几个简短的 if,您可以执行以下操作(根本不使用正则表达式):

var s = "I'm on IPOD"

mobiles = ["Android", "webOS", "iPod"]
var isMobile = false

for (var i = 0; i < mobiles.length; i++) 
    if (s.toLowerCase().indexOf(mobiles[i].toLowerCase()) >= 0) 
        isMobile = true;
    break;
    


window.alert(isMobile)

【讨论】:

你能看看这个jsfiddle.net/cktp5Lus @fxvlad - 我看过了。您的原始正则表达式没有任何问题,它完全符合它的要求。为什么要改变它? 感谢您的回复!是的,它工作得非常好,但我尽量保持我的代码结构化,而且这一行很长并且不适合屏幕,这就是我想要像连接一样的 smt,但这个 dpoes 不适用于正则表达式字符串。 看这里的答案:***.com/questions/12317049/…

以上是关于如何将此正则表达式行分成几行? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

带有几行包含“#”和特定文本的正则表达式

替换 PL/SQL 中的几行正则表达式函数

如何使用长正则表达式进行行延续? [复制]

grep正则表达式

文本处理三剑客,正则表达式等

如何删除所有行包括Notepad ++中的正则表达式的'collect_host_stats'[复制]