1

我在正则表达式方面不是很好,似乎不能很好地理解它们。

我正在寻找一个正则表达式,它将匹配并允许以下字符串作为用户名,具有以下条件:

  • 用户名可以:以数字或字母开头
  • 用户名可以包含特殊字符:点、破折号、下划线
  • 用户名必须在此范围内:从 3 个字符到 32 个字符。
  • 用户名中的字母数字字符可以是:小写大写
  • 不能包含空格

几乎类似于 Twitter 和 Facebook 的用户名模式。

请帮我。谢谢你。

FWI:我试过这个:/^(?=.{1,15}$)[a-zA-Z][a-zA-Z0-9]*(?: [a-zA-Z0-9]+)*$/- 这不满足我的条件。

4

4 回答 4

5

试试这个

^[a-zA-Z0-9][a-zA-Z0-9\._-]{2,31}$

这导致 php 代码

if (preg_match('~^[a-zA-Z0-9][a-zA-Z0-9\._-]{2,31}$~', $username) {
    //do something
}
于 2013-03-11T13:23:41.223 回答
2

以数字或字母开头

[a-zA-Z0-9]

可以包含如上加点、破折号和下划线

[a-zA-Z0-9._-]

一起

[a-zA-Z0-9][a-zA-Z0-9._-]{2, 31}
于 2013-03-11T13:24:45.833 回答
2

试试这个,这在每个注册表单中都对我有用

//username Validation
var usernameRegex = /^[a-zA-Z0-9\s\[\]\.\-#']*$/i;
var username=document.getElementById('username');
if(username.value==""){
document.getElementById('lblusername').innerHTML="Username Required!";
username.focus();
return false;
}   
else if(usernameRegex.test(username.value)== false) 
{
document.getElementById('lblusername').innerHTML="Allow Alphanumeric Only! (E.g Demo123)";
username.focus();
return false;
}
else
{
document.getElementById('lblusername').innerHTML="";
}   
于 2013-03-11T14:40:14.330 回答
1

尝试这个:

^[0-9a-zA-Z][0-9a-zA-Z\-\._]{2,31}$
于 2013-03-11T13:23:51.263 回答