簡體   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