如何在方括号组中表示单个空格字符

img*_*gen 8 regex

我面临一个问题,即在[]字符集表达式中表示单个空格.我最终使用了这样的东西

([a-zA-Z0-9]|\x20)+
Run Code Online (Sandbox Code Playgroud)

我认为这不是很优雅

更新:我现在知道我的正则表达式出了什么问题.我用过这样的东西,但没用

[A-Za-z0-9/.,':!?$%()- ]+
Run Code Online (Sandbox Code Playgroud)

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

[A-Za-z0-9 /.,':!?$%()-]+
Run Code Online (Sandbox Code Playgroud)

它很有效,很奇怪.我正在尝试使用在线正则表达式测试仪RegExr.

Update2:我现在发现问题是-内部正则表达式用于表示一个范围,[]所以任何事物之前和之后都有不同的含义而不仅仅是一个简单的字符

Tim*_*ker 17

[a-zA-Z0-9 ]
Run Code Online (Sandbox Code Playgroud)

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

^(?!.*  )[a-zA-Z0-9 ]*$
Run Code Online (Sandbox Code Playgroud)

匹配包含字母数字和空格的字符串,但只包含单个空格.

  • @blgt:如果需要太长时间,Firefox会中止正则表达式匹配尝试.像Chrome这样的其他浏览器不会 - 它们会冻结几分钟.对于用于服务器端正则表达式验证的大多数编程语言也是如此.锚点缓解了这个问题,但还不够.而且,空格的数量是无关紧要的,"abcabcabc abcabcab cabcabca bcabc!"`以同样的方式失败. (3认同)

AD7*_*six 7

你可以用一个空间.

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

 ([a-zA-Z0-9]| )+
Run Code Online (Sandbox Code Playgroud)

在实践中:

[a-zA-Z0-9 ]+
Run Code Online (Sandbox Code Playgroud)