【问题标题】: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;但是串联不起作用。

标签: javascript jquery html regex


【解决方案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 不适用于正则表达式字符串。
猜你喜欢
  • 1970-01-01
  • 2011-04-16
  • 1970-01-01
  • 2022-01-20
  • 2013-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多