【问题标题】:Alternation operator inside square brackets does not work方括号内的交替运算符不起作用
【发布时间】:2012-04-18 16:18:08
【问题描述】:

我正在创建一个 javascript 正则表达式来匹配搜索引擎字符串中的查询。我遇到了交替的问题。我有以下正则表达式:

.*baidu.com.*[/?].*wd{1}=

我希望能够匹配除 'wd' 之外还具有字符串 'word' 或 'qw' 的字符串,但我尝试的一切都失败了。我认为我可以执行以下操作:

.*baidu.com.*[/?].*[wd|word|qw]{1}=

但它似乎不起作用。

【问题讨论】:

  • [] 创建一个字符类,使用 (wd|word|qw) 代替。也去掉那个{1},没用。
  • 更多关于您要完成的工作的背景信息将有助于我们为您提供更多帮助:D

标签: javascript regex


【解决方案1】:

[wd|word|qw] 替换为(wd|word|qw)(?:wd|word|qw)

[] 表示字符集,() 表示逻辑分组。

【讨论】:

  • +1,但是...更进一步,您可以添加“将(wd|word|qw)替换为qw|w(?:or)?d
【解决方案2】:

你的表情:

.*baidu.com.*[/?].*[wd|word|qw]{1}=

确实需要一些更改,包括将[wd|word|qw] 更改为(wd|word|qw) 删除多余的{1},如下所示:

.*baidu.com.*[/?].*(wd|word|qw)=

但您还需要了解,表达式的第一部分 (.*baidu.com.*[/?].*) 将匹配 baidu.com hello what spelling/handle?????????hbaidu-com/ 甚至类似 lkas----jhdf lkja$@@!3hdsfbaidugcomlaksjhdf.[($?lakshf,因为点 (.) 匹配任何字符,除了换行符...要匹配文字点,您必须使用反斜杠对其进行转义(例如 \.

您可以采用多种方法来匹配 URL 中的内容,但如果您告诉我们您正在尝试做什么或完成什么,我们可以为您提供更多帮助 - 也许正则表达式不是最佳解决方案或 (EDIT) 仅部分最佳解决方案?

【讨论】:

    猜你喜欢
    • 2012-05-08
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    • 2014-10-16
    • 2022-01-16
    • 1970-01-01
    相关资源
    最近更新 更多