我在JSfiddle有以下代码:
$(document).ready(function() {
$('.testThis').click(function() {
$('.regexValidation').each(function() {
if ($(this).val() != "" || $(this).val() != null) {
// Check the regex
var expression = new RegExp('/^[0-9a-z_]+$/i');
var myVal = $(this).val();
if (expression.test(myVal) == true) {
// All is okay
alert("OK");
} else {
alert("Error");
}
}
});
});
});
Run Code Online (Sandbox Code Playgroud)
预期的计划是只允许使用字母数字和下划线.禁止空格和标点符号等
我无法弄清楚为什么会出错,但它总是会为测试返回false.
你的语法错了.
将其更改为 var expression = /^[0-9a-z_]+$/i;
与PHP不同,Javascript支持正则表达式文字,语法/.../创建一个RegExp对象.
该RegExp构造函数接受一个正则表达式作为一个字符串,没有分隔符.
因此,你也可以写new RegExp('^[0-9a-z_]+$', 'i')
从您的RegExp中删除引号:
var expression = new RegExp(/^[0-9a-z_]+$/i);
Run Code Online (Sandbox Code Playgroud)