【问题标题】:jQuery Regex - Finding All Joined WordsjQuery Regex - 查找所有连接词
【发布时间】:2017-02-12 14:47:20
【问题描述】:

jQuery 正则表达式

/((\b([a-zA-Z]{0,15})\b)([^a-z0-9\$_]))/g

我目前的尝试: https://regex101.com/r/d3VUpG/1

示例测试字符串:

(options.method==="
|options.method==="
=options.method==="HEAD"
 options.method.options.method==="HEAD"

我想要实现的目标

作为$1返回任何连接词的值,例如:

  • options.method - 将 = $1
  • options.method.options.method - 也会 = $1

问题

我怎样才能找到所有用点 (.) 连接的单词,然后像下面的例子一样包裹在一个跨度中;

.replace(//gi,'<span class="join">$1</span>')

【问题讨论】:

  • 你有什么理由不喜欢在这段时间.split
  • @MrFarberToYou 这在我的语法高亮脚本中使用,并将特定部分包装在具有不同类的 &lt;span&gt; 标记中。
  • @TimMarshall - 像这样? regex101.com/r/MixoAh/1
  • 是的@JoshCrozier,这绝对是我要找的!

标签: javascript jquery regex


【解决方案1】:

您可以使用以下表达式:

/((?:\w+\.)+\w+)/g

解释

  • ( - 开始捕获组 1
    • (?: - 非捕获组的开始
      • \w+\. - 匹配 [a-zA-Z0-9_] 字符一次或多次,后跟文字 . 字符
    • )+ - 非捕获组结束;匹配组一次或多次
    • \w+ - 匹配 [a-zA-Z0-9_] 字符一次或多次
  • ) - 捕获组 1 结束

换句话说,非捕获组(?:\w+\.)+ 将匹配像option. 这样的子字符串一次或多次,然后是最终的\w+,它将匹配没有文字. 字符的最终单词跟随它。由于只有一个捕获组包含所有内容,因此您可以将 span 标签包裹在第一个组 $1 周围。

Live Example

string.replace(/((?:\w+\.)+\w+)/g, '<span class="join">$1</span>');

如上所述,\w 包括下划线、数字和字母([a-zA-Z0-9_]),所以如果你只想匹配字母字符,那么你可以将\w 换成[a-z],并使用不区分大小写标志:

/((?:[a-z]+\.)+[a-z]+)/gi

【讨论】:

  • 我怎样才能让它也找到.example,因为它只是在搜索连接,即;多个用“.”连接。
  • @TimMarshall - 我不确定我是否理解。如果你更新this example,那我可以看看。
  • @TimMarshall - 你可以使用/(\w*(?:\.\w+)+)/g -> updated example
  • @TimMarshall - 您可以使用否定字符类:["']([^"'\s\n]+)["'] -> updated example
  • @TimMarshall - 如果您需要覆盖有换行符的情况,请使用 &lt;!--([\s\S]*?)--&gt; - regex101.com/r/hCrSs6/1
猜你喜欢
  • 2017-09-10
  • 2015-09-04
  • 1970-01-01
  • 1970-01-01
  • 2014-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多