韩文和字母正则表达式返回false

korean and alphabet regex returning false

本文关键字:返回 false 正则表达式 韩文      更新时间:2023-09-26

我一直有麻烦验证我的网站的表单输入。我正在寻找接受英文字符和韩文字符的名称字段。我在输入韩文字符时没有遇到任何问题,但是当我添加韩文正则表达式时,该函数返回false,而没有它返回true。

var recommend_coffee_your_name_field = $('#coffee_recommend_your_name_field');
recommend_coffee_your_name_field.keyup(function(e) {
  var $th = $(this);
  $th.val( $th.val().replace(/[^a-zA-Z0-9'u{3130}-'u{318F}'u{AC00}-'u{D7AF}]/g, function(str) { 
    alert('You typed " ' + str + ' ".'n'nPlease use only letters and numbers.'); return ''; 
  } ) );
  if(e.keyCode !== 8 || e.keyCode !== 9 ) {             
    var recommend_coffee_your_name_field_length = recommend_coffee_your_name_field.val().length;
    //console.log("Your Name Field Length: " + your_name_field_length);
    if( recommend_coffee_your_name_field_length > 0 ){
      //recommend_coffee_your_name_field.removeClass("error").addClass("success");
      recommend_coffee_shop_your_name_value = true;
    }
    else{
      //recommend_coffee_your_name_field.removeClass("success").addClass("error");
      recommend_coffee_shop_your_name_value = false;
    }
    if (!recommend_coffee_shop_your_name_value) {
      alert("The name field is missing");
      e.preventDefault();
    } 
});

在您的示例中,从Unicode转义序列中删除花括号就足够了:

/[^a-zA-Z0-9'u3130-'u318F'uAC00-'uD7AF]/g

注意'u{3130}仅在ECMAScript 6兼容的浏览器中可用,请参考ECMAScript 6兼容性表。

JavaScript字符串字面量指南调用'uXXXX Unicode转义序列:

Unicode转义序列在'u之后至少需要4个字符。
示例: 'u00A9 = ©

'u{XXXXX}称为Unicode码点转义:

ECMAScript 6新增功能。使用Unicode码点转义,任何字符都可以使用十六进制数字进行转义,这样就可以使用最高0x10FFFF的Unicode码点。对于简单的Unicode转义,通常需要分别编写代理符的一半以达到相同的效果。

示例: 'u{2F804}//与简单的Unicode转义相同:'uD87E'uDC04