14

我在 [] 字符集表达式中表示单个空格时遇到了问题。我最终使用了这样的东西

([a-zA-Z0-9]|\x20)+

我认为这不是很优雅

更新:我现在知道我的正则表达式出了什么问题。我使用了类似这样的东西,但它不起作用

[A-Za-z0-9/.,':!?$%()- ]+

但是当我像这样将空间移动到 9 之后

[A-Za-z0-9 /.,':!?$%()-]+

它有效,只是很奇怪。我正在使用在线正则表达式测试器RegExr尝试此操作。

更新2:我现在发现问题是-内部正则表达式用于表示一个范围,[]因此它之前和之后的任何内容都具有不同的含义,而不仅仅是一个普通字符

4

2 回答 2

22
[a-zA-Z0-9 ]

将为字符类添加一个空格。我猜你已经知道了,并且你想确保你的字符串中只有一个空格。在这种情况下,您需要额外的前瞻:

^(?!.*  )[a-zA-Z0-9 ]*$

匹配包含字母数字和空格但仅包含单个空格的字符串。

于 2013-01-16T08:21:32.090 回答
9

你可以使用一个空间。

对于问题中的正则表达式结构:

 ([a-zA-Z0-9]| )+

在实践中:

[a-zA-Z0-9 ]+
于 2013-01-16T08:20:09.260 回答