正则表达式只允许单词之间有一个空格
Posted
技术标签:
【中文标题】正则表达式只允许单词之间有一个空格【英文标题】:Regular expression to allow only one space between words 【发布时间】:2020-05-09 16:28:23 【问题描述】:我在 ASP.NET 应用程序中有一个文本框,为此我需要使用正则表达式来验证用户输入字符串。正则表达式的要求是 -
-
它应该只允许单词之间有一个空格。也就是说,单词或字符之间的空格总数应该只有一个。
它应该忽略前导和尾随空格。
匹配:
测试 测试 abc不匹配:
测试 abc def Test abc --> 我想在两个单词之间包含多个空格。但是,编辑在发布问题时会忽略这些多余的空格。【问题讨论】:
对匹配标准的两种不同解释表明不清楚 - 是否允许超过两个词? 为了更清楚起见,我已经编辑了这个问题。就像您指出的那样 - 由于要求是不允许单词之间有多个空格,因此它限制用户输入最多包含两个单词。 【参考方案1】:假设必须有一个或两个“单词”(即非空格字符序列)
"\s*\S+(\s\S+)?\s*"
如果您只想允许使用字母,请将 \S
更改为 [A-Za-z]
。
【讨论】:
哇,表达式 "\s*\w+(\s\w+)?\s*" 非常适合空格。我看到的唯一问题是,它不允许字符串中包含任何特殊字符。我还需要允许特殊字符和数字。 @Test_User。编辑为允许任何非空格字符。【参考方案2】:非常简单:
/^ *(\w+ ?)+ *$/
小提琴:http://refiddle.com/gls
【讨论】:
对不起,没用。即使对于没有任何空格的字符串,它也会不断抛出验证错误。 检查您的复制/粘贴,因为它使用 .NET RE 库在 refiddle 中工作。【参考方案3】:也许这个可以?
\s*\S+?\s?\S*\s*
编辑:它是一个服务器编码的正则表达式,这意味着您可能需要删除其中一个转义斜杠。
【讨论】:
对不起,我的正则表达式很差。我正在使用您的表达式设置我的 RegEx 验证控件的 ValidationExpression 属性,它不会匹配单个单词。如果您可以对表达式进行任何必要的修改并将其发布,我将不胜感激。谢谢! 更新了我的帖子 - 再试一次。【参考方案4】:怎么样:
^\s*(\w+\s)*\w+\s*$
【讨论】:
以上是关于正则表达式只允许单词之间有一个空格的主要内容,如果未能解决你的问题,请参考以下文章
需要正则表达式来匹配两个单词,因为它们之间可能有任意数量的空格或其他字符