我有一个正则表达式,标准是这样的:
该字符串应包含a-z
或A-Z
或0-9
,并且可能包含.
,-
,_
等字符。如果有任何这些特殊字符,它应该只发生一次。
我想要的是将第一个字符限制为a-> z或0-9而不是(。 - _)在第一个字符后允许,如果有任何允许的特殊字符,它应该只出现一次。
所需格式如下:
这就是我现在所拥有的。
<?php
$buffer = 'joffin.joy';
if (preg_match('/[^a-z0-9.-_]/i', $buffer)){
echo 'in-valid characters<br/>';
}else{
echo 'valid characters<br/>';
}
?>
答案 0 :(得分:2)
您可以使用此正则表达式:
'/^[a-z0-9](?!.*?[._-]{2})[\w.-]*[a-z0-9]$/i'
这不允许:
答案 1 :(得分:0)
这样的表达怎么样(没有优化,但意图应该清楚)
'/^[a-z0-9]+[._-]?[a-z0-9]+$/i'
只有有效名称才能与此匹配