带有字符后跟字符的集合的正则表达式

时间:2014-02-18 08:11:13

标签: regex

我正在用Java编写一个正则表达式,用于捕获没有空格的单词。 这个词只能包含字母,数字,连字符和点。 字符集[\w+\-\\.]效果很好。 现在我想编辑该集以允许点后面的单个空格。 我如何编辑正则表达式?

3 个答案:

答案 0 :(得分:0)

如果一个点后跟一个空格,我想这个模式既不应该是匹配字符串中的第一个也不是最后一个?您可能希望将其括在单词边界\b

([0-9A-Za-z-]|\b\.( \b)?)+

我故意不使用\w来排除下划线。

答案 1 :(得分:0)

您可以添加符合此附加要求的alternation

([\w\-.]|(?<=\.) )+

here on Regexr

(?<=\.)lookbehind assertion。它确保空间仅匹配,如果它前面有一个点。

其他提示:

  • \w包含下划线,并且每个默认值仅匹配ASCII字母/数字。如果您关心Unicode,请使用修饰符UNICODE_CHARACTER_CLASS\w启用Unicode,或使用Unicode properties \p{L}\p{Nd}匹配Unicode字母和数字。

  • 您无需在字符类中转义点。

  • 你的角色类中有\w+,你知道吗,你只是在接受的角色中加上“+”字符?

答案 2 :(得分:0)

为了在点之后只允许一个空格,你可以使用这个正则表达式:

^(?!.*?\. {2})[\w.-]+$
  • 您不需要在字符类
  • 中转义点或连字符
  • (?!.*?\. {2})是一个负面的前瞻,在点
  • 之后不允许2个或更多个空格