Javascript Regex允许单词字符、括号、空格和连字符

Javascript Regex允许单词字符、括号、空格和连字符,javascript,regex,Javascript,Regex,我试图用javascript中的正则表达式验证字符串。字符串可以有: 文字字符 括号 空间 连字符(-) 3至50长度 以下是我的尝试: function validate(value, regex) { return value.toString().match(regex); } validate(someString, '^[\w\s/-/(/)]{3,50}$'); 像这样编写验证器 function validate(value, re) { return re.t

我试图用javascript中的正则表达式验证字符串。字符串可以有:

  • 文字字符
  • 括号
  • 空间
  • 连字符(-)
  • 3至50长度
以下是我的尝试:

function validate(value, regex) {
    return value.toString().match(regex);
}

validate(someString, '^[\w\s/-/(/)]{3,50}$');

像这样编写验证器

function validate(value, re) {
  return re.test(value.toString());
}
使用这个正则表达式

/^[\w() -]{3,50}$/
一些测试

// spaces
validate("hello world yay spaces", /^[\w() -]{3,50}$/);
true

// too short
validate("ab", /^[\w() -]{3,50}$/);
false

// too long
validate("this is just too long we need it to be shorter than this, ok?", /^[\w() -]{3,50}$/);
false

// invalid characters
validate("you're not allowed to use crazy $ymbols", /^[\w() -]{3,50}$/);
false

// parentheses are ok
validate("(but you can use parentheses)", /^[\w() -]{3,50}$/);
true

// and hyphens too
validate("- and hyphens too", /^[\w() -]{3,50}$/);
true

正则表达式中的转义字符是
\
,而不是
/
。由于您使用的是字符串,您必须对
\
本身进行转义(或者让您的生活更轻松,使用regex文本)。是的,如果您使用正确的转义felix,您当前的regex工作正常。
\w
定义的单词字符包括
a-Za-z0-9
和下划线
,对吗?在方括号内你不需要转义
-
等@anubhava:For
你是对的,但是是否转义
-
取决于它在字符类中的位置。另外,
RegExp.test()如果您只是想验证,
可能是比
String.match()
更好的选择。在这个答案中,您在哪里看到
str\match
?我在
validate
方法中使用
re#test
,问题是:
返回值.toString().match(regex)