PHP preg_匹配需要确保单词之间只允许一个空格字符
基本上,我需要一个preg_匹配,确保每个单词之间只允许有一个空格字符(如果有多个单词) 我现时的规则是:PHP preg_匹配需要确保单词之间只允许一个空格字符,php,regex,Php,Regex,基本上,我需要一个preg_匹配,确保每个单词之间只允许有一个空格字符(如果有多个单词) 我现时的规则是: (^[A-Za-z\s]+$) 谢谢。这取决于你所说的“单词”是什么意思,但假设你指的是A-Z或A-Z中的字母,你可以试试这个: ^[a-zA-Z]+( [a-zA-Z]+)*$ 请注意,\s并不表示空格字符-它表示任何空格,包括新行。我想指定一些匹配出现的次数,例如{1}{1,5}(仅匹配1或介于1和5之间,包括1和5之间),因此类似于 ^[A-Za-z]+({1})$ 将搜索任何后
(^[A-Za-z\s]+$)
谢谢。这取决于你所说的“单词”是什么意思,但假设你指的是A-Z或A-Z中的字母,你可以试试这个:
^[a-zA-Z]+( [a-zA-Z]+)*$
请注意,
\s
并不表示空格字符-它表示任何空格,包括新行。我想指定一些匹配出现的次数,例如{1}{1,5}(仅匹配1或介于1和5之间,包括1和5之间),因此类似于
^[A-Za-z]+({1})$
将搜索任何后面有一个空格的单词,而不是后面有一个空格的单词
/\s?\S+\s/
将搜索任一侧有空格或仅在末尾有空格的任何字符。此外,标志是否与单词匹配?这很有效,但在正则表达式中并不重要,除非您想重复。所有正则表达式都假定行中每个字符都有一个匹配项,这意味着{1}是多余的。第一个正则表达式可以工作,但当只有一个字(没有前导/尾随空格)时,它也会失败。
/^[\S]+\S?[^\S]?/
匹配以一个或多个非空白字符开头的字符串,仅此而已。如果后跟空白字符,\s?
将与之匹配,如果后跟非空白字符,[^\s]?
将与之匹配。但两个正则表达式都不会阻止两个或多个连续空格的匹配。/^[\S]+\S?[^\S]?/
表示如果非空格字符后有空格,则强制该字符仅为一个,否则不匹配。这听起来和OP要求的完全一样。如果从来没有一种情况下你会允许多个空格,比如说在句子之间,你可以用一个空格替换所有多个空格,而不用担心它们与单词的接近。e、 g./{SPACECHAR}+/{SPACECHAR}/
。(我使用了{SPACECHAR}而不是空格来表达我的意思。)
/\s?\S+\s/