Regex 我可以使用什么正则表达式只匹配字母、数字和每个单词之间的一个空格?

Regex 我可以使用什么正则表达式只匹配字母、数字和每个单词之间的一个空格?,regex,Regex,如何创建只匹配字母和数字的正则表达式,以及每个单词之间的一个空格 好例子: Amazing Hello World I am 500 years old 太神了 你好,世界 我已经500岁了 坏例子: Hello world I am 500 years old. I am Chuck Norris 你好,世界 我已经500岁了。 我是查克·诺里斯 这将匹配一个单词 '[a-zA-Z0-9]+\ ?' 大多数正则表达式实现都支持命名字符类: ^[[:alnum:]

如何创建只匹配字母和数字的正则表达式,以及每个单词之间的一个空格

好例子:

Amazing Hello World I am 500 years old 太神了 你好,世界 我已经500岁了 坏例子:

Hello world I am 500 years old. I am Chuck Norris 你好,世界 我已经500岁了。 我是查克·诺里斯
这将匹配一个单词

'[a-zA-Z0-9]+\ ?'

大多数正则表达式实现都支持命名字符类:

^[[:alnum:]]+( [[:alnum:]]+)*$
你可以聪明一点,虽然不太清楚,但可以简化为:

^([[:alnum:]]+ ?)*$
仅供参考,第二个允许在字符串末尾使用假空格字符。如果你不想这样,就用第一个正则表达式吧

正如其他海报所说,如果
[:alnum:]
不适合你,那么你可以使用
[A-Za-z0-9]

(?:[a-zA-Z0-9]+[ ])+[a-zA-Z0-9]+
如果我理解正确,上面的正则表达式应该可以工作。 请参见下面的屏幕截图:


它的工作原理

您想匹配一行包含多个这样的单词,还是一次只匹配一个单词?你能举例说明你到底想匹配什么?为什么要求不允许多个空格?这真的有那么重要吗?还是在应用正则表达式之前,可以自动将所有多个空间转换为单个空间?或者,这仅仅是一个学术练习吗?太好了,现在让那个句柄变成一行:——)不,它会匹配一些单词。只有那些包含(ascii)范围a-z和a-z的。单词
café
将不匹配。它还将匹配仅由数字组成的字符串,如
01012009
,我不会称之为单词。这并不能回答问题,行首的空格是如何处理的?:-)如果您在开始处添加“?”以处理行/字符串开始处的单个空格(以及^$锚定点),我将给您投票。其他一切都很好。抱歉,刚刚看到你的编辑。下面的正则表达式工作得很好:^([A-Za-z0-9]+?)*$非常感谢!您使用什么工具测试正则表达式(如屏幕截图所示)?即使末尾有尾随空格,也会匹配。
(?:[a-zA-Z0-9]+[ ])+[a-zA-Z0-9]+
^[a-zA-Z]+([\s][a-zA-Z]+)*$
^([a-zA-Z0-9]+\s?)*$