您好,这是我之前第一次使用正则表达式,并且我试图获取用户输入的变量,并查看它是否仅限于AZ,az,0-9和_
这是我到目前为止的代码:
function validateCSV(x){
var y = document.getElementById('column').value;
var pattern = new RegExp('^\b\w\b$');
if(!pattern.test(y)){
alert("Use only A-Z, a-z, 0-9, or _ in column names.");
return false;
}
}
据我所知,使用\ w会匹配任何字母数字和下划线但没有空格,这正是我想要的。然而,即使我只有像test1或测试一样的东西,它仍然似乎无法正常工作,因为它仍然会弹出警报并且不让我继续。有关此事的任何信息将不胜感激。
答案 0 :(得分:6)
您缺少量词,您应该使用正则表达式文字:
/^\w+$/
答案 1 :(得分:3)
您当前的正则表达式正在寻找单个字符(根据定义,\b
在匹配的开始和结束时使用时将断言为true。
我认为您正在寻找的正则表达式是/^[a-z0-9_]+$/i
请注意,您可以为+
使用不同的内容:
+
一个或多个字符*
零个或多个字符,与+
基本相同,但也允许空字符串{5}
正好五个字符{3,16}
三到十六个字符(含)根据需要变化!
答案 2 :(得分:1)
问题是您是从字符串文字定义正则表达式,这意味着需要转义反斜杠。你需要:
new RegExp('^\\b\\w\\b$');
或者只使用正则表达式文字:
var pattern = /^\b\w\b$/;
这导致您的下一个问题:正则表达式将匹配单个\w
字符。您需要使用*
来匹配零或更多,或+
来匹配一个或多个。
根本不需要\b
部分:
var pattern = /^\w*$/;
一般来说,使用new RegExp()
和字符串定义正则表达式比正则表达式文字更笨拙,如果正则表达式实际上来自字符串变量,我只会使用它,因为,例如,它需要包含输入的文本由用户。