2011-12-12 33 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字母数字*或引号,但不包含其他内容。 –