在正则表达式字符括号中包含连字符?

Par*_*roX 55 javascript regex testing validation jquery

$.validator.addMethod('AZ09_', function (value) { 
    return /^[a-zA-Z0-9.-_]+$/.test(value); 
}, 'Only letters, numbers, and _-. are allowed');
Run Code Online (Sandbox Code Playgroud)

当我使用某些东西test-123时仍然触发,就像连字符无效一样.我试着\---

Mar*_*ers 87

使用转义\-应该被罚款,但你也可以尝试把它的开头或字符类的结尾.这应该适合你:

/^[a-zA-Z0-9._-]+$/
Run Code Online (Sandbox Code Playgroud)

  • 将连字符放在最后不适用于某些 Microsoft 工具,例如 Microsoft SQL Server Management Studio。转义他们的连字符确实有效。 (2认同)
  • @SabaAhang 因为如果它位于开头或结尾,则它不能位于其他两个字符之间来创建字符范围(例如“[0-9]”) (2认同)
  • @SabaAhang以下文档页面提到连字符可以在字符括号的开头或结尾进行转义:http://www.regular-expressions.info/charclass.html (2认同)

Guf*_*ffa 27

使用连字符\-是正确的方法.

我已经验证表达式/^[a-zA-Z0-9.\-_]+$/允许使用连字符.您也可以使用\w该类将其缩短为/^[\w.\-]+$/.

(将连字符放在表达式的最后位置实际上导致它不需要转义,因为它不能成为范围的一部分,但是你可能仍然想要养成总是逃避它的习惯.)