1

我想匹配一个包含 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。我究竟做错了什么?

4

1 回答 1

3

改变

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

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

正则表达式文字不得在引号之间。

由于您只想简单地测试字符串,因此最好使用更快的测试,并且不需要捕获组:

if (!/^[\w_\-]{5,15}$/.test(username))
于 2013-04-04T11:18:50.710 回答