我现在已经搜索了2个小时,但我仍然没有得到它。
我需要评估帐户名称的输入。这只能包含数字(0-9
),字母(a-z
和A-Z
)和点(.
)。
其他一切都是被禁止的。所以,没有下划线(_
),加上(+
)等等。
有效帐户应如下所示:
john.green
luci.mayer89
admin
我尝试过很多preg_match / regex示例,但我没有让它工作。每当我echo preg_match(...)
1
时,我true
为$accountname = "+_#luke123*";
echo preg_match("/[a-z0-9.]/i", $accountname);
//--> gives back 1 as true
。
/**/
object _layout extends BaseScalaTemplate[play.twirl.api.HtmlFormat.Appendable,Format[play.twirl.api.HtmlFormat.Appendable]](play.twirl.api.HtmlFormat) with play.twirl.api.Template1[String,play.twirl.api.HtmlFormat.Appendable] {
/**/
def apply/*1.2*/(title: String):play.twirl.api.HtmlFormat.Appendable = {
_display_ {
此外,控制帐户名称以至少2个字母或数字开头并以至少1个字母或数字结尾会很棒 - 但我远远不够。
答案 0 :(得分:6)
您需要使用锚点和量词:
echo preg_match("/^[a-z0-9.]+$/i", $accountname);
您的字符串+_#luke123*
包含一个字母和一个数字,因此匹配。如果我们告诉引擎只匹配从开头(^
)到结束($
)的整个字符串,我们将确保它不匹配。 +
确保我们不仅捕获1个,而且捕获所有字符。
请参阅this demo,现在没有匹配!
修改强>: 由于您还需要检查以下条件:
字符串必须以2个或更多字母或数字开头,以1或结尾 更多字母或数字
我可以建议这个^[a-z0-9]{2,}[a-z0-9.]*[a-z0-9]+$
正则表达式(必须与i
选项一起使用),这意味着: