jQuery正则表达式 - 查找所有加入的单词

时间:2017-02-12 01:08:46

标签: javascript jquery regex

jQuery Regex

/((\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>')

1 个答案:

答案 0 :(得分:2)

您可以使用以下表达式:

/((?:\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换成{{1}并使用不区分大小写的标志:

[a-z]