我让用户在我的网站上创建自己的个人资料,以便他们可以选择他们的网址。例如,如果他们的名字是John Smith,他们可能想输入john-smith,然后他们的个人资料网址将是www.mysite.com/john-smith。
我需要使用preg_match来验证他们输入的是有效的URL slug。因此,以下是有效的规则:
它必须包含至少一个字母,并且只能包含字母,数字和连字符
有人可以帮我解决,但我擅长PHP而且还有正则表达式的垃圾!
答案 0 :(得分:14)
我希望这段代码不言自明:
<?php
function test_username($username){
if(preg_match('/^[a-z][-a-z0-9]*$/', $username)){
echo "$username matches!\n";
} else {
echo "$username does not match!\n";
}
}
test_username("user-n4me");
test_username("user+inv@lid")
但如果没有,函数test_username()将针对模式测试其参数:
^
)... [a-z]
)... [-a-z0-9]*
)...... $
)。答案 1 :(得分:3)
更好的解决方案:
function is_slug($str) {
return preg_match('/^[a-z0-9](-?[a-z0-9]+)$/i', $str);
}
试验:
享受!
答案 2 :(得分:1)
非常简单,如果我们假设第一个字符必须是一个字母......
/[a-z]{1}[a-z0-9\-]*/i