在JavaScript中无法匹配字母数字

时间:2013-04-04 11:17:44

标签: javascript regex coffeescript

我希望将一个单词与5到15个字母数字字符匹配,我也可以包含_和 - 字符。我正在使用JQuery来获取输入的值,我在CoffeeScript中编程:

username = $('#register input[name="user"]').val()
if ( ! username.match('/^([\w_\-]{5,15})$/'))
    alert(username)

用JS编译的是:

username = $('#register input[name="user"]').val();
if (!username.match('/^([\w_\-]{5,15})$/')) {
     return alert(username);
}

我收到带有“dsdsfsdsf”等字符串的警报,它应返回true,实际上每个字符串在尝试匹配时都返回false。我做错了什么?

1 个答案:

答案 0 :(得分:3)

更改

if ( ! username.match('/^([\w_\-]{5,15})$/'))

if ( ! username.match(/^([\w_\-]{5,15})$/))

正则表达式文字不能介于引号之间。

由于您只想测试字符串,最好使用速度更快的test并且您不需要捕获组:

if (!/^[\w_\-]{5,15}$/.test(username))