2011-12-12 67 views
-1

我需要一個Javascript正則表達式,將只允許hebrewenglish,只有人物" ' -的Javascript允許特定的輸入

我達到了這個一個:

 var allowed = /^(?:[\u0590-\u05FF\uFB1D-\uFB40]+|[\w]+|["'])$/i; 
     if(!allowed.exec(name)) { 
      alert('not allowed'); 
     } 

有什麼不對呢?

+1

你爲什麼不告訴我們它有什麼問題? –

+5

我不知道,它有什麼錯呢?你是否遇到錯誤,誤報或誤報,或者......?你爲什麼不把所有允許的字符放在同一個'[]'中,而不是使用或條件?另外,你可能會喜歡說'if(!allowed.test(name))'而不是'.exec()'。 – nnnnnn

回答

3

什麼不妥

什麼,立刻跳出我[?]:

  • 你的正則表達式不指定-允許
  • 您使用\w,這允許_以及A-Za-z
  • 如果您應該使用test,則使用exec
  • |表達式是不必要的,使用統一的字符類

嘗試以下操作:

var allowed = /^[-A-Z"'\u0590-\u05FF\uFB1D-\uFB40]+$/i; 
if(!allowed.test(name)) { 
    alert('not allowed'); 
} 

或者,如果你想確保它是英語希伯來語:

/^(?:[-A-Z"']+|[-"'\u0590-\u05FF\uFB1D-\uFB40]+)$/i 

如果這對您沒有幫助,您需要更具體地說明爲什麼它不適合您。

+2

'|'不僅是不必要的,它們會影響匹配,因此它*匹配所有希伯來字符*或全部ASCII字母數字*或引號,但不包含其他內容。 –