我正在尝试使用preg_match进行表单验证。正则表达式需要匹配任何不包含字符的输入,以及后跟连字符后跟多个字符的字符。
换句话说,正则表达式应该捕获任何不是由字符[a-z]和带连字符的单词组成的单词的输入(中间只有一个连字符)。
正则表达式还应该捕获带有连字符的单词(连字符后面没有其他单词,例如“hello-”),并且还应该使用起始连字符(例如“-hello”)来捕获单词。
非常感谢任何帮助。
答案 0 :(得分:2)
尝试使用以下代码 - 如果我理解了您的问题,则只会匹配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";
}
}
?>
见
上的演示