我正在对用户名注册系统进行排序,我们的协议的一部分是用户只能使用A-Z,a-z,0-9,_,。和 - 。另外,它们不能连续有两个标点符号。
我试图找到一种更简单的方法来检测标点符号,而不仅仅是写出物理字符串:
body
(以上不包括所有案例;仅举几个例子)
是否有更简单的方法来检查字符串,以便按行任何顺序连续计算两个特定字符的数学?
谢谢!
答案 0 :(得分:4)
验证允许的符号:
if (preg_match("/[^A-Za-z0-9.,_-]/", $string)){
throw new Exception("Illegal characters in username");
}
检查两个或多个标点符号是否相邻:
if (preg_match("/[.,_-]{2,}/", $string)){
throw new Exception("Two or more nearby punctuation symbols are not allowed in username");
}
答案 1 :(得分:1)
您可以使用preg_match():
if(preg_match('/\.{2,}|([^a-zA-Z0-9_\-\.]+)/', $username) {
// invalid username
} else {
// the username is valid
}
正则表达式将找到无效的用户名:至少两个连续点,或者允许的列表之外的字符。