只匹配一个字或连字符
我正在尝试使用preg_match进行表单验证。 正则表达式需要匹配任何不仅包含字符的输入,而且字符后跟一个连字符,后面跟着更多的字符。
换句话说,正则表达式应该捕获任何不是由字符[az]和带连字符的单词组成的单词(中间只有一个连字符)的输入。
正则表达式还应该带有尾随连字符(在连字符后面没有其他单词,例如“hello”)并且还应该用起始连字符(例如“ - hello”)来捕捉单词。
任何帮助将不胜感激。
尝试下面的代码 - 如果我理解你的问题,这将只匹配john-smith
,这是你想要的。 请注意 - 这几乎就是@Wrikken在之前的评论中提出的。
<?php
$test = array("john-smith", "123john", "john-", "john and mary smith");
$regex = '/^([a-z]+(?:-[a-z]+)?)$/i';
foreach($test as $t) {
if(preg_match($regex, $t, $m)) {
echo "$t matches!n";
}
}
?>
请参阅演示
http://regex101.com/r/aU3qM0
链接地址: http://www.djcxy.com/p/76717.html