Monday, June 3, 2024
 Popular · Latest · Hot · Upcoming
89
rated 0 times [  93] [ 4]  / answers: 1 / hits: 7051  / 7 Years ago, thu, april 27, 2017, 12:00:00

I am trying to make a regex that only allows chars A-Z + ints 0 - 9 together with dash - and underscore _ but also Japanese chars.


$.validator.addMethod("alphaDash", function(value, element) {
return this.optional(element) || /^[a-zA-Z0-9-_]+$/i.test(value);
}, "Username must contain only letters, numbers, dashes or underscores.");

The regex above /^[a-zA-Z0-9-_]+$/ only works for english chars, how can I make it accept japanese chars? Hiragana/Katakana/Kanji


More From » regex

 Answers
3

Acc. to XRegExp Unicode scripts:




  • Hiragana (p{Hiragana}) char regex: [u3041-u3096u309D-u309F]|uD82CuDC01|uD83CuDE00

  • Katakana (p{Katakana}) char regex: [u30A1-u30FAu30FD-u30FFu31F0-u31FFu32D0-u32FEu3300-u3357uFF66-uFF6FuFF71-uFF9D]|uD82CuDC00

  • Kanji (p{Han}): [u2E80-u2E99u2E9B-u2EF3u2F00-u2FD5u3005u3007u3021-u3029u3038-u303Bu3400-u4DB5u4E00-u9FD5uF900-uFA6DuFA70-uFAD9]|[uD840-uD868uD86A-uD86CuD86F-uD872][uDC00-uDFFF]|uD869[uDC00-uDED6uDF00-uDFFF]|uD86D[uDC00-uDF34uDF40-uDFFF]|uD86E[uDC00-uDC1DuDC20-uDFFF]|uD873[uDC00-uDEA1]|uD87E[uDC00-uDE1D]



You may either use XRegExp (which is preferable since the library is constantly updated):





var rx = new XRegExp(^[-\w\p{Hiragana}\p{Katakana}\p{Han}]+$);
console.log(XRegExp.test(werえ, rx));
console.log(XRegExp.test(werえ3, rx));

<script src=https://cdnjs.cloudflare.com/ajax/libs/xregexp/3.2.0/xregexp-all.min.js></script>





Or you may use those ranges to build a regex that you will have to support later:





var pHiragana = [\u3041-\u3096\u309D-\u309F]|\uD82C\uDC01|\uD83C\uDE00;
var pKatakana = [\u30A1-\u30FA\u30FD-\u30FF\u31F0-\u31FF\u32D0-\u32FE\u3300-\u3357\uFF66-\uFF6F\uFF71-\uFF9D]|\uD82C\uDC00;
var pHan = [\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u3005\u3007\u3021-\u3029\u3038-\u303B\u3400-\u4DB5\u4E00-\u9FD5\uF900-\uFA6D\uFA70-\uFAD9]|[\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D];
var rx = new RegExp(^([\w-]| + pHiragana + | + pKatakana + | + pHan + )+$);
console.log(rx.test(werえ));
console.log(rx.test(werえ3));




[#21082] Wednesday, April 26, 2017, 7 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
devonw

Total Points: 311
Total Questions: 116
Total Answers: 111

Location: Senegal
Member since Fri, Aug 21, 2020
4 Years ago
;