No \p{L} for JavaScript Regex ?在 JS 正则表达式中使用 Unicode



我想添加a-zA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒx次,但我觉得这很丑陋。所以我尝试p{L}但它在 JavaScript 中不起作用。

任何想法 ?

我的实际正则表达式:[a-zA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ][a-zA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ' ,"-]*[a-zA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ'",]+

我想要这样的东西:[p{L}][p{L}' ,"-]*[p{L}'",]+(或小于实际表达式(

您需要添加的是所请求内容的子集。首先,您应该定义所需的字符集。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);

你有 XRegExp 插件来支持 unicode 字母匹配器:

var unicodeWord = XRegExp("^\pL+$"); // L: Letter

在这里,您可以看到更多示例在javascript中匹配Unicode。

http://xregexp.com/plugins/

最新更新