JavaScript Regex 没有 \p{L} 吗?在 JS 正则表达式中使用 Unicode
No \p{L} for JavaScript Regex ? Use Unicode in JS regex
我需要添加 a-zA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ
x 次,但我发现这非常难看。所以我尝试 \p{L}
但它在 JavaScript.
中不起作用
有什么想法吗?
我的实际正则表达式:[a-zA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ][a-zA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ' ,"-]*[a-zA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ'",]+
我想要这样的东西:[\p{L}][\p{L}' ,"-]*[\p{L}'",]+
(或小于实际表达式)
您有 XRegExp 插件来支持 unicode 字母匹配器:
var unicodeWord = XRegExp("^\pL+$"); // L: Letter
在这里您可以看到更多匹配 unicode 的例子 javascript
您需要添加的是您要求的部分内容。首先,您应该定义所需的字符集。 \pL
表示每种语言的每个字母。
它有点丑,但不影响性能,是解决 JS 中此类问题的最佳解决方案。 ECMA2018 支持 \pL
,但所有主流浏览器都无法实现。
如果是个人品味,你可以把这种丑陋程度降低一点:
var characterSet = 'a-zA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ';
var re = new RegExp('[' + characterSet + ']' + '[' + characterSet + '\' ,"-]*' + '[' + characterSet + '\'",]+');
此更新归功于 @Francesco:
var pCL = 'a-zA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ';
var re = new RegExp(`[${pCL}][${pCL}' ,"-]*[${pCL}'",]+`);
console.log(re.source);
我需要添加 a-zA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ
x 次,但我发现这非常难看。所以我尝试 \p{L}
但它在 JavaScript.
有什么想法吗?
我的实际正则表达式:[a-zA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ][a-zA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ' ,"-]*[a-zA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ'",]+
我想要这样的东西:[\p{L}][\p{L}' ,"-]*[\p{L}'",]+
(或小于实际表达式)
您有 XRegExp 插件来支持 unicode 字母匹配器:
var unicodeWord = XRegExp("^\pL+$"); // L: Letter
在这里您可以看到更多匹配 unicode 的例子 javascript
您需要添加的是您要求的部分内容。首先,您应该定义所需的字符集。 \pL
表示每种语言的每个字母。
它有点丑,但不影响性能,是解决 JS 中此类问题的最佳解决方案。 ECMA2018 支持 \pL
,但所有主流浏览器都无法实现。
如果是个人品味,你可以把这种丑陋程度降低一点:
var characterSet = 'a-zA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ';
var re = new RegExp('[' + characterSet + ']' + '[' + characterSet + '\' ,"-]*' + '[' + characterSet + '\'",]+');
此更新归功于 @Francesco:
var pCL = 'a-zA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ';
var re = new RegExp(`[${pCL}][${pCL}' ,"-]*[${pCL}'",]+`);
console.log(re.source);