我正在寻找一个正则表达式,以允许JavaScript / jQuery中的字母数字字符,-,_或空格。
字符集在这里非常有用。你需要为要验证的字符创建一个匹配集:
\w
匹配由字母和数字组成的字符串,在JavaScript中相当于[A-Za-z0-9_]
(其他语言可能不同)。-
和空格,它们可以被组合成匹配集,如[\w\- ]
。但是,您可能希望考虑使用\s
而不仅仅是空格字符(\s
也匹配制表符和其他形式的空白)。
-
转义为 \-
,以便正则表达式引擎不会将其与像A-Z
这样的字符范围混淆^
和$
来锚定字符串的开头和结尾,从而确保整个字符串与匹配。/^[\w\-\s]+$/
请注意,+
表示至少要有一个字符才能匹配;如果零长度字符串也可以,则使用*
最后,http://www.regular-expressions.info/是一个很棒的参考资料
加分项: 此正则表达式 不匹配 非ASCII字符。不幸的是,大多数浏览器中的正则表达式引擎不支持命名字符集,但有一些库可以帮助解决这个问题。
对于支持命名字符集的语言/平台,您可以使用/^[\p{Letter}\d\_\-\s]+$/
[a-z[0-9]_]/i
和 \w
是相同的。 - elclanrs尝试使用这个正则表达式:
/^[a-z\d\-_\s]+$/i
\w
表示字母和下划线,这只是像 \d
表示 [0-9]
一样的快捷方式。 - elclanrs/^[\w]+([-_\s]{1}[a-z0-9]+)*$/i
,它可以使文本中只包含单个空格、破折号或下划线。例如:atoz-some word_1234。 - kva/^[-\w\s]+$/
\w 匹配 字母、数字 和 下划线
\s 匹配 空格、制表符 和 换行符
- 匹配连字符(如果你的字符集中有连字符,例如[a-z],请务必将连字符放在开头,如此[-a-z])
var string = 'test- _ 0Test';
string.match(/^[-_ a-zA-Z0-9]+$/)
var regex = new RegExp("^[A-Za-z0-9? ,_-]+$");
var key = String.fromCharCode(event.charCode ? event.which : event.charCode);
if (!regex.test(key)) {
event.preventDefault();
return false;
}
[A-Za-z0-9?spaceHere,_-]
中,问号'?'后面有一个空格,这个正则能够匹配空格。其他的正则表达式,如/^[-\w\s]+$/
和/^[a-z\d\-_\s]+$/i
对我来说并不起作用。请尝试这个正则表达式
*更新过的正则表达式
/^[a-z0-9]+([-_\s]{1}[a-z0-9]+)*$/i
这将只允许文本之间有单个空格或“-”或“_”
Ex: this-some abc123_regex
*注意:我已根据Toto的问题更新了正则表达式。
_____
(末尾有一个空格)。 - Totovar1 regex = new RegExp1("^[A-Za-z0-9? ,_-]+$");
var1 key = String1.fromCharCode(event1.charCode ? event1.which : event1.charCode);
if (!regex1.test(key)) {
event1.preventDefault();
return false;
}
以下两种方法对我都有效。
/[^a-zA-Z0-9\-_\s]/g
/[^a-z\d\-_\s]+$/i
可以将除了字母数字、-和_之外的其他字符替换为空,就像这样。
inputString.replace(/[^a-zA-Z0-9\-_\s]/g,"");
尝试使用以下正则表达式来允许字母数字和空格
[a-zA-Z0-9 ]
/[a-z\d\-_\s]+/i
。但你可能想要“学习”正则表达式。你无法在网上找到所有的正则表达式,特别是如果它不常见。 - elclanrs/^[a-z\d\-_\s]+$/i
。这就是为什么了解正则表达式很有用... 我在这里学到了http://regular-expressions.info。 - elclanrs