如何编写允许单词间仅以空格分隔的正则匹配模式
你需要将正则pattern修改为/^[a-zA-Z]+( [a-zA-Z]+)*$/即可满足所有校验规则,规则匹配逻辑如下:
^匹配字符串起始位,避免字符串开头出现非法字符[a-zA-Z]+匹配至少1个大小写英文字母,对应第一个单词( [a-zA-Z]+)*为重复分组,*表示分组可出现0次或多次:分组内以1个空格开头,后接至少1个英文字母,保证多个单词之间只能用单个空格分隔$匹配字符串结束位,避免字符串末尾出现非法字符
修改后的完整代码如下:
$pattern = '/^[a-zA-Z]+( [a-zA-Z]+)*$/'; $validation = preg_match($pattern, $request->status); if($validation){ //匹配到对应模式时执行你的逻辑 }
匹配效果验证
- 有效输入全部通过:单个纯字母单词、多个纯字母单词用空格分隔的输入均可正常匹配,大小写不受限制
- 无效输入全部拦截:包含下划线、短横线、连续空格、首尾空格、数字、其他特殊符号的输入都会匹配失败
如果你的业务允许输入首尾带空格,可以调整正则为/^\s*[a-zA-Z]+( [a-zA-Z]+)*\s*$/,会自动忽略首尾的空白字符。
内容的提问来源于stack exchange,提问作者user17426459
相关产品推荐
相关产品推荐

