微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

允许单词之间有空格的正则表达式

如何解决允许单词之间有空格的正则表达式

tl;博士

只需在您的角色类添加一个空格。

^[a-zA-Z0-9_ ]*$


现在,如果你想严格…

以上并不完全正确。由于这*意味着 零或更多 的事实,它将匹配以下所有通常不会匹配的情况:

  • 一个空字符串,“”。
  • 一个完全由空格组成的字符串,“听听听听”。
  • 一个以空格开头和/或结尾的字符串,“听你好世界听”。
  • 一个字符串,在单词之间包含多个空格,“Hello听听世界”。

最初我认为这些细节不值得讨论,因为 OP 提出了一个如此基本的问题,以至于严格性似乎不是问题。既然这个问题已经流行起来了,我想说…

…使用答案。

一种可能性是将空格添加到您的字符类中,就像 acheong87 建议的那样,这取决于您对模式的严格程度,因为这也将允许以 5 个空格开头的字符串或仅由空格组成的字符串。

另一种可能性是定义一个模式:

我将使用\w它在大多数正则表达式风格中都相同[a-zA-Z0-9_](在某些情况下它是基于 Unicode 的)

^\w+( \w+)*$

这将允许一系列至少一个单词,并且单词由空格分隔。

^匹配字符串的开头

\w+匹配一系列至少一个单词字符

( \w+)*是重复 0 次或多次的组。在组中,它需要一个空格,后跟一系列至少一个单词字符

$匹配字符串的结尾

其中,在我看来(不使用\w)转换为:

^[a-zA-Z0-9_]+( [a-zA-Z0-9_]+)*$

(无论如何,请支持@stema。)

关于这个(和@stema)答案的一些注意事项:

  • 如果您想在单词之间允许 多个 空格(例如,如果您想允许意外的双空格,或者如果您正在使用 PDF 中的复制粘贴文本),+请在空格后添加

    ^\w+( +\w+)*$
    
  • 如果要允许制表符和换行符(空白字符),则将空格替换为\s+

    ^\w+(\s+\w+)*$
    

在这里我建议+认情况下,因为例如,Windows 换行符由 两个连续 的空白字符组成\r\n,所以你需要+捕获两者。

还是行不通?

检查您正在使用的正则表达式的方言。*在像 Java 这样的语言中,你必须转义你的反斜杠, \\w\\s. 在较旧或更基本的语言和实用程序中,例如sed\w未定义\s,因此请分别使用字符类( 例如[a-zA-Z0-9_]和)将它们写出来[\f\n\p\r\t]


*我知道这个问题被标记为vb.net "显示标记为“vb.net”的问题”),但基于 25,000 多个视图,我猜不仅仅是那些遇到这个问题的人。目前它是谷歌搜索词组的第一个热门词, 正则表达式空格词

解决方法

我想要一个防止符号并且只允许字母和数字的正则表达式。下面的正则表达式效果很好,但它不允许单词之间有空格。

^[a-zA-Z0-9_]*$

例如,当使用这个正则表达式“HelloWorld”很好,但“Hello World”不匹配。

如何调整它以允许空间?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。