使用字母表的日语字符的正则表达式

时间:2016-11-21 10:31:46

标签: javascript jquery regex

我想添加一个验证规则来验证Text,它应该是以下任何一个规则

  • 日文字符(任意日文字母)=>北海道

  • 字母(A-Z)=> Kantname

  • 带字母的日语字符=>北海道AB

我写下了正则表达式,但它没有按预期工作

/^[a-zA-Z]+$|[\u3000-\u303F]|[\u3040-\u309F]|[\u30A0-\u30FF]|[\uFF00-\uFFEF]|[\u4E00-\u9FAF]|[\u2605-\u2606]|[\u2190-\u2195]|\u203B/g;

如果我在下面尝试返回 TRUE

console.log(pattern.test('北海道 <script>'));

1 个答案:

答案 0 :(得分:1)

您正在以错误的方式使用锚点:您需要将所有字符类合并为一个单独的类并将锚点应用于此超类:

/^[a-zA-Z\u3000-\u303F\u3040-\u309F\u30A0-\u30FF\uFF00-\uFFEF\u4E00-\u9FAF\u2605-\u2606\u2190-\u2195\u203B]+$/

请参阅regex demo

&#13;
&#13;
var re = /^[a-zA-Z\u3000-\u303F\u3040-\u309F\u30A0-\u30FF\uFF00-\uFFEF\u4E00-\u9FAF\u2605-\u2606\u2190-\u2195\u203B]+$/;
var strs = ['北海道AB', 'Kantname', '北海道', '北海道 <script>'];

for (var s of strs) {
  if (re.test(s)) {
    console.log(s, " matches the regex");
  } else {
    console.log(s, " does NOT match the regex");
  }
}
&#13;
&#13;
&#13;