文本框应使用正则表达式接受英语和阿拉伯语字符

时间:2016-04-29 06:34:04

标签: jquery regex

我需要创建应接受英文和阿拉伯字母的正则表达式。我怎么能这样做?

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();
  }
});

2 个答案:

答案 0 :(得分:1)

我必须检查几件事情并在这里找到结论:

  • 您需要使用[\u0600-\u06FF]正则表达式来匹配JS中的阿拉伯字符
  • 您需要的完整正则表达式为var regx = /^[a-zA-Z\u0600-\u06FF,-][\sa-zA-Z\u0600-\u06FF,-]*$/;(请参阅demo
  • JQuery验证插件没有regx规则,您需要使用additional-methods.js
  • 中的pattern
  • 您还可以为minlength规则使用动态消息:使用minlength: jQuery.validator.format("At least {0} characters required!")

查看更新的JS demo

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

$("#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>

答案 1 :(得分:0)

\p{InArabic}\p{Latin} Unicode脚本使用以下正则表达式模式

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