2016-11-21 55 views
2

表達我要添加一條驗證規則以驗證文本要麼應該是以下規則普通日本炭與字母

  • 日語字符(任何日文字母)=>中任一項北海道

  • 字母(AZ)=> 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>')); 
+0

嘗試'/^[一 - 龯A-ZA-Z] + $ /'。 –

回答

1

您正在使用錨以錯誤的方式:你需要合併所有的字符類到一個單一的類,並應用錨以在此超:

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

regex demo

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

+0

是它的完美添加一些特殊的字符,只是我加\\ \#\\ ..感謝這 – AnNaMaLaI

+1

你不應該逃避'@',也不'''。如果將它們添加到字符類中,請將它們添加爲'[@#....]'' –