正则expression式:允许字母,数字和空格(至less包含一个字母或数字)

我目前正在使用这个正则expression式^[A-Z0-9 _]*$接受字母,数字,空格和下划线。 我需要修改它以至less要求string中的某个数字或字母。 任何帮助,将不胜感激!

这将用于validation我的网站的用户名。 我真的想支持尽可能多的字符,但只是想确保我防止代码注入和字符将显示所有用户罚款。 所以我明确地打开正则expression式validation的build议,将支持更广泛的字符集。

你只需要指定你当前的RE,然后再跟一个字母/数字,然后是你当前的RE。

 ^[A-Z0-9 _]*[A-Z0-9][A-Z0-9 _]*$ 

既然你已经说过他们是Javascript RE,那么在这里有一个有用的网站,你可以在这里对input数据进行REtesting。

如果你还想要小写字母:

 ^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$ 

继续前进,并得到一个点,而不是一再使用这些:

 [A-Za-z0-9 _] [A-Za-z0-9] 

我有两个(希望更好)replace这两个:

 [\w ] [^\W_] 

第一个匹配任何单词字符(字母数字和_ ,以及Unicode)和空格。 第二个匹配任何不是非单词字符或下划线(仅字母数字以及Unicode)的内容。

如果你不想Unicode的匹配,然后坚持其他的答案。 但是这些在眼睛上看起来更容易(在我看来)。 在撰写本文时采用“首选”的答案,并使用较短的正则expression式给予我们:

 ^[\w ]*[^\W_][\w ]*$ 

也许更可读,也许更less。 当然更短。 你的select。

编辑:

就像一个笔记,我在这里假设Perl风格的正则expression式。 您的正则expression式引擎可能支持或不支持\ w和\ W。

编辑2:

testing我的JS正则expression式testing人员链接和一些基本的例子工作正常。 没有做任何广泛的事情,只是想确保\ W和\ W在JS中工作得很好。

编辑3:

试图用JS正则expression式testing者站点testing一些Unicode,我发现这个问题:该页面使用ISO而不是Unicode。 难怪我的日语input不匹配。 哦,那应该不难解决:

 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 

或者。 我不知道JavaScript应该做什么,但是我相信这并不困难。

 ^[ _]*[A-Z0-9][A-Z0-9 _]*$ 

你可以select在前面有一些空格或下划线,然后你需要一个字母或数字,然后是任意数字,字母,空格或下划线。

只包含空格和下划线的内容将会使[A-Z0-9]部分失效。

你可以使用一个lookaround :

 ^(?=.*[A-Za-z0-9])[A-Za-z0-9 _]*$ 

它会检查string是否有字母或数字,如果是,它将检查其余的字符是否符合您的要求。 这可能可以改善,但似乎与我的testing工作。

更新:

Chris Lutzbuild议添加修改 :

 ^(?=.*[^\W_])[\w ]*$/ 

对于我@“^ [\ w] + $”正在工作,允许数字,字母和空格,但是至less需要input一个字母或数字。

这将validation特殊字符和前后空格:

 var strString = "Your String"; strString.match(/^[A-Za-z0-9][A-Za-z0-9 ]\*[A-Za-z0-9]\*$/) 
 $("#ValuationName").bind("keypress", function (event) { if (event.charCode!=0) { var regex = new RegExp("^[a-zA-Z ]+$"); var key = String.fromCharCode(!event.charCode ? event.which : event.charCode); if (!regex.test(key)) { event.preventDefault(); return false; } } }); 

只要你可以添加到jquery.validationEngine-en.js文件

  "onlyLetterNumberSp": { "regex": ^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$, "alertText": "* No special characters allowed" }, 

并在文本字段中称为

 <input type="text" class="form-control validate[required,custom[onlyLetterNumberSp]]" id="title" name="title" placeholder="Title"/>