Javascript 正则表达式字母数字英语和日语
Javascript regex alphanumeric english and japanese
我正在尝试制作一个只允许字符 A-Z + 整数 0 - 9 以及破折号 - 和下划线 _ 以及日文字符的正则表达式。
$.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.");
/^[a-zA-Z0-9-_]+$/ 上面的正则表达式只适用于英文字符,如何让它接受日文字符? Hiragana/Katakana/Kanji
这是一个匹配平假名 (unicode 3040-309F) 的正则表达式示例:
/[a-zA-Z0-9_\u3040-\u309F]+/
http://regexr.com/3frf9
您可以更改它以添加其他 dialects/languages。您可能想查看 this answer 以查看其他一些 unicode 值,或者只是在其他地方在线查找它们。
- 平假名 (
\p{Hiragana}
) 字符正则表达式:[\u3041-\u3096\u309D-\u309F]|\uD82C\uDC01|\uD83C\uDE00
- 片假名 (
\p{Katakana}
) 字符正则表达式:[\u30A1-\u30FA\u30FD-\u30FF\u31F0-\u31FF\u32D0-\u32FE\u3300-\u3357\uFF66-\uFF6F\uFF71-\uFF9D]|\uD82C\uDC00
- 汉字 (
\p{Han}
): [\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]
您可以使用 XRegExp(这是更好的选择,因为库会不断更新):
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>
或者您可以使用这些范围来构建您以后必须支持的正则表达式:
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"));
我正在尝试制作一个只允许字符 A-Z + 整数 0 - 9 以及破折号 - 和下划线 _ 以及日文字符的正则表达式。
$.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.");
/^[a-zA-Z0-9-_]+$/ 上面的正则表达式只适用于英文字符,如何让它接受日文字符? Hiragana/Katakana/Kanji
这是一个匹配平假名 (unicode 3040-309F) 的正则表达式示例:
/[a-zA-Z0-9_\u3040-\u309F]+/
http://regexr.com/3frf9
您可以更改它以添加其他 dialects/languages。您可能想查看 this answer 以查看其他一些 unicode 值,或者只是在其他地方在线查找它们。
- 平假名 (
\p{Hiragana}
) 字符正则表达式:[\u3041-\u3096\u309D-\u309F]|\uD82C\uDC01|\uD83C\uDE00
- 片假名 (
\p{Katakana}
) 字符正则表达式:[\u30A1-\u30FA\u30FD-\u30FF\u31F0-\u31FF\u32D0-\u32FE\u3300-\u3357\uFF66-\uFF6F\uFF71-\uFF9D]|\uD82C\uDC00
- 汉字 (
\p{Han}
):[\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]
您可以使用 XRegExp(这是更好的选择,因为库会不断更新):
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>
或者您可以使用这些范围来构建您以后必须支持的正则表达式:
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"));