正则表达式中的这个竖线是什么意思呢?

在看jquery代码的时候,看到这么一句:

var rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;

但是不知道这里面的 '|' 的作用或者意思是什么呢?求解。

阅读 7.4k
2 个回答

(abc|def) 表示 字符串 匹配,只要符合任一字符串即可

?:表示匹配里面的字符串,但是不捕获,也就是没有 $1 $2 之类的捕获

使用(abc)(?:abc) 的区别是,后者不提供$1 \1 之类的访问,前者可以通过 $1 得到 abc

(?:abc|def) 就这匹配任一字符串,但是不补货

([^.]*)
(?:
    \.(.+)
    |
)

| 后面没有东西, 也就是
按照上例,就是匹配\.(.+)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏