当前位置:  开发笔记 > 编程语言 > 正文

正则表达式匹配name1.name2 [.name3]

如何解决《正则表达式匹配name1.name2[.name3]》经验,为你挑选了1个好方法。

我正在尝试验证用户ID匹配的示例:

smith.jack or smith.jack.s

换句话说,任意数量的非空白字符(点除外),后跟一个点,后跟任意数量的非空白字符(点除外),可选地后跟一个点后跟任意数量的非空格字符(点除外).我想出了几个可以正常工作的变化,除了允许连续点!例如,以下正则表达式

^([\S][^.]*[.]{1}[\S][^.]*|[\S][^.]*[.]{1}[\S][^.]*[.]{1}[\S][^.]*)$

匹配"smith.jack"和"smith.jack.s",但也匹配"smith..jack""smith..jack.s"!我的天哪,它甚至喜欢一个圆点作为第一个角色.似乎编码会如此简单,但事实并非如此.我正在使用.NET,顺便说一句.

令人沮丧.



1> kch..:

这有帮助吗?

/^[^\s\.]+(?:\.[^\s\.]+)*$/

或者,在扩展格式中,带有注释(ruby-style)

/
  ^           # start of line
  [^\s\.]+    # one or more non-space non-dot
  (?:         # non-capturing group
    \.        # dot something
    [^\s\.]+  # one or more non-space non-dot
  )*          # zero or more times
  $           # end of line
/x

你不清楚你有多少次点东西,但你可以替换*with {1,3}或者东西,来指定允许的重复次数.

我应该说清楚斜杠是ruby(以及perl和js等)中的字面正则表达式分隔符.

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有