繁体   English   中英

javascript-字母数字和特殊字符的正则表达式

[英]javascript - regex for alphanumeric and special character

尝试使用以下条件为字符串(公司/组织名称)构建正则表达式:

  • 没有前导或尾随空格
  • 之间没有双倍空格
  • 不应只允许使用单个字符(列出的字母数字或白色)
  • 可以以字母数字或白色列出的字符开头
  • 不应多次输入任何列入白名单的字符

这些的正则表达式: /(?! )([a-zA-Z0-9_\\.\\-#&])+([a-zA-Z0-9_\\.\\-#&\\s])*(?<! )$/

 console.log(/(?! )([a-zA-Z0-9_\\.\\-#&])+([a-zA-Z0-9_\\.\\-#&\\s])*(?<! )$/.test('_')); // shouldn't allow console.log(/(?! )([a-zA-Z0-9_\\.\\-#&])+([a-zA-Z0-9_\\.\\-#&\\s])*(?<! )$/.test('a')); // shouldn't allow console.log(/(?! )([a-zA-Z0-9_\\.\\-#&])+([a-zA-Z0-9_\\.\\-#&\\s])*(?<! )$/.test('abc abc')); // shouldn't allow console.log(/(?! )([a-zA-Z0-9_\\.\\-#&])+([a-zA-Z0-9_\\.\\-#&\\s])*(?<! )$/.test('_123')); // works fine console.log(/(?! )([a-zA-Z0-9_\\.\\-#&])+([a-zA-Z0-9_\\.\\-#&\\s])*(?<! )$/.test('# abc')); // works fine console.log(/(?! )([a-zA-Z0-9_\\.\\-#&])+([a-zA-Z0-9_\\.\\-#&\\s])*(?<! )$/.test('abc abc!')); // works fine console.log(/(?! )([a-zA-Z0-9_\\.\\-#&])+([a-zA-Z0-9_\\.\\-#&\\s])*(?<! )$/.test('abc abc# abc')); // works fine 

当前的正则表达式不符合所有条件,无法确定正则表达式有什么问题?

您可以使用

/^(?=.{2})(?!(?:[^_.#&!-]*[_.#&!-]){2})[a-zA-Z0-9_.#&!-]+(?:\s[a-zA-Z0-9_.#&!-]+)*$/

细节

  • ^ -字符串的开头
  • (?=.{2}) -任何2个字符必须在开头
  • (?!(?:[^_.#&!-]*[_.#&!-]){2}) -字符串中没有2次出现_.#&!-字符
  • [a-zA-Z0-9_.#&-]+ -1个或多个允许的字符(空格除外)
  • (?:\\s[a-zA-Z0-9_.#&!-]+)* -0次以上的出现
    • \\s -1个空格
    • [a-zA-Z0-9_.#&!-]+ -1+个字母,数字和一些符号
  • $ -字符串结尾。

JS演示

 var rx = /^(?=.{2})(?!(?:[^_.#&!-]*[_.#&!-]){2})[a-zA-Z0-9_.#&!-]+(?:\\s[a-zA-Z0-9_.#&!-]+)*$/; console.log(rx.test('_')); // shouldn't allow console.log(rx.test('a')); // shouldn't allow console.log(rx.test('abc abc')); // shouldn't allow console.log(rx.test('_123')); // works fine console.log(rx.test('# abc')); // works fine console.log(rx.test('abc abc!')); // works fine console.log(rx.test('abc abc# abc')); // works fine 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM