2016-04-29 11 views
0

Ich muss einen regulären Ausdruck erstellen, der sowohl englische als auch arabische Buchstaben akzeptiert. Wie kann ich das machen?Das Textfeld sollte sowohl englische als auch arabische Zeichen mit regulären Ausdrücken akzeptieren.

HTML:

<input type="text" class="ico1" name="firstname" id="firstname" placeholder="enter name " title="enter name "> 

JS:

$("#register-form").validate({ 
    rules: { 
    firstname: { 
     required: true, 
     minlength: 2, 
     regx: /^[a-zA-Z-,]+(\s{0,1}[a-zA-Z-, ])*$/ 
    }, 
    }, 
    messages: { 
    firstname: { 
     required: "<font color='red'> please enter name </font>", 
     minlength: "<font color='red'>minimum length is 2</font>", 
     regx: "<font color='red'>enter only english or arabic letters</font>" 
    } 
    }, 
    submitHandler: function(form) { 
    form.submit(); 
    } 
}); 
+0

Könnten Sie bitte eine Arbeits Geige und einen Teststring teilen? –

+0

Es gibt keine 'regx' Eigenschaft. Woher kommt das? –

Antwort

1

Ich hatte mehrere Dinge zu überprüfen und hier ar emy Befund:

  • Sie benötigen [\u0600-\u06FF] Regex verwenden, um eine arabische Zeichen in JS
  • Der vollständige Regex Sie ist var regx = /^[a-zA-Z\u0600-\u06FF,-][\sa-zA-Z\u0600-\u06FF,-]*$/; müssen übereinstimmen (siehe demo)
  • die JQuery Validierung Plugin nicht regx Regel nicht haben, müssen Sie pattern vom additional-methods.js
  • benutzen zu können Sie auch eine dynamische Nachricht für die minlength Regel verwenden kann: u minlength: jQuery.validator.format("At least {0} characters required!") se

JS demo aktualisiert Siehe:

var regx = /^[a-zA-Z\u0600-\u06FF,-][\sa-zA-Z\u0600-\u06FF,-]*$/; // E.g. هل بعتم بيتكم في نيويورك 
 
$.validator.setDefaults({ 
 
\t \t submitHandler: function() { 
 
\t \t \t alert("submitted!"); 
 
\t \t } 
 
\t }); 
 

 
$("#register-form").validate({ 
 
    debug: true, // REMOVE THIS, IT IS FOR DEMO DEBUG ONLY!!! 
 
    rules: { 
 
    firstname: { 
 
     required: true, 
 
     pattern: regx, 
 
     minlength: 2 
 
    }, 
 
    }, 
 
    messages: { 
 
    firstname: { 
 
     required: "please enter name", 
 
     minlength: jQuery.validator.format("At least {0} characters required!"), 
 
     pattern: "enter only english or arabic letters" 
 
    } 
 
    }, 
 
    submitHandler: function(form) { 
 
    form.submit(); 
 
    } 
 
});
<script src="https://cdn.jsdelivr.net/jquery.validation/1.15.0/jquery.validate.min.js"></script> 
 
<script src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/additional-methods.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form id="register-form" name="register-form"> 
 
<input type="text" class="ico1" name="firstname" id="firstname" placeholder="enter name " title="enter name "/> 
 
<input type="Submit"/> 
 
</form>

+0

Keine Ahnung, warum der Snippet hier nicht funktioniert, es funktioniert gut bei https://jsfiddle.net/3awj76u4/ –

0

Verwenden Sie das folgende RegexMuster mit \p{InArabic} und \p{Latin}Unicode-Skripte:

... 
regx : /^[\p{InArabic}\p{Latin}-,]+(\s?[\p{InArabic}\p{Latin}-, ])*$/ 
+0

Wenn ich das in meinen Code stelle, wird es funktionieren ..? –

+0

mindestens, sollten Sie versuchen, – RomanPerekhrest

+0

Wenn es in JavaScript verwendet wird, nein, es wird nicht funktionieren. –

Verwandte Themen