Javascript 如何正则表达式匹配整个字符串而不是单个字符

Javascript 如何正则表达式匹配整个字符串而不是单个字符,javascript,regex,validation,arabic,Javascript,Regex,Validation,Arabic,我正试图按照中的说明,使用JavaScript正则表达式/[\u0600-\u06FF]/对阿拉伯字母字符输入实现“alpha”验证。我只接受阿拉伯字母字符和空格 现在的问题是它给出了以下结果: r = /[\u0600-\u06FF]/ r.test("abcd") // false - correct r.test("@#$%^") // false - correct r.test("س") // true - correct r.test("abcd

我正试图按照中的说明,使用JavaScript正则表达式
/[\u0600-\u06FF]/
对阿拉伯字母字符输入实现“alpha”验证。我只接受阿拉伯字母字符和空格

现在的问题是它给出了以下结果:

r = /[\u0600-\u06FF]/

r.test("abcd")      // false - correct
r.test("@#$%^")     // false - correct
r.test("س")         // true  - correct
r.test("abcd$$#5س") // true  - should be false
r.test("abcdس")     // true  - should be false

如果给出了一个匹配字符,那么它将整个输入分类为可接受的,即使输入的其余部分充满了不可接受的字符。我应该使用什么正则表达式呢?

您需要在正则表达式中添加
^
$
锚,以及
+
以允许多个字符

试试这个:

/^[\u0600-\u06FF]+$/

我不确定您提到的“阿拉伯空格”是否包含在字符范围内,但如果您想在字符串中允许空白,则只需在
[]
括号内添加一个
\s

您可以显式允许某些键,例如:numpad、backspace和space,请检查下面的代码段:

function restrictInputOtherThanArabic($field)
{
  // Arabic characters fall in the Unicode range 0600 - 06FF
  var arabicCharUnicodeRange = /[\u0600-\u06FF]/;

  $field.bind("keypress", function(event)
  {
    var key = event.which;

    // 0 = numpad
    // 8 = backspace
    // 32 = space
    if (key==8 || key==0 || key === 32)
    {
      return true;
    }

    var str = String.fromCharCode(key);
    if ( arabicCharUnicodeRange.test(str) )
    {
      return true;
    }

    return false;
  });
}

// call this function on a field
restrictInputOtherThanArabic($('#firstnameAr'));