提问者:小点点

pcre正则表达式匹配前两个单词,数字


我需要一个正则表达式来匹配字符串中的前两个单词(它们可能包含字母、数字、逗号和其他标点符号,但不能包含空格、制表符或新行)。我的解决方案是([^\s]\s){2},但如果它匹配类似于:'123 word,hello'*中的'123 word',则它不适用于只有两个单词且后面没有空格的字符串。

什么是这个任务的正确正则表达式?


共3个答案

匿名用户

你说得几乎对:

([^\s]+\s+[^\s]+)

假设您不需要对要使用的字符进行更严格的控制。

如果您需要同时匹配两个单词或仅匹配一个单词,您可以使用以下其中之一:

([^\s]+\s+[^\s]+|[^\s]+)
([^\s]+(?:\s+[^\s]+)?)

匿名用户

您可以使用preg_split()来分割空格上的字符串,而不是尝试匹配单词。

匿名用户

如果你真的只想允许数字和字母[^\s]不够严格。使用这个:

/[a-z0-9]+(\s+[a-z0-9]+)?/i