JavaScript正则表达式没有\ p {L}吗?在JS正则表达式中使用Unicode [英] No \p{L} for JavaScript Regex ? Use Unicode in JS regex
问题描述
我本想在x时添加a-zA-ZáàâäãåçéèëëíîïïnóòôöõúùûüýÿæœÁÀÂÅÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝÜÝŸÆŒ
,但我觉得这很丑陋.因此,我尝试 \ p {L}
,但它在JavaScript中不起作用.
I nedd to add a-zA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ
x time but I find this very ugly. So I try \p{L}
but it does not working in JavaScript.
有什么想法吗?
我的实际正则表达式:<代码> [A-ZA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ] [A-ZA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ ' "- ] * [A-ZA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ'",] + 代码>
my actual regex : [a-zA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ][a-zA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ' ,"-]*[a-zA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ'",]+
我想拥有这样的东西: [\ p {L}] [\ p {L}',-] * [\ p {L}'",] +
(或小于实际表达式)
I want to have a thing like that : [\p{L}][\p{L}' ,"-]*[\p{L}'",]+
(or smaller than the actual expression)
推荐答案
您需要添加的内容是您要求的内容的子集.首先,您应该定义所需的字符集. \ pL
表示每种语言的每个字母.
What you need to add is a subset of what you asked for. First you should define what set of characters you need. \pL
means every letter from every language.
这很丑陋,但不影响性能,而是解决JS中此类问题的最佳解决方案.ECMA2018支持 \ pL
,但所有主流浏览器都无法实现.
It's kind of ugly but doesn't affect performance and rather the best solution to get around such kind of problems in JS. ECMA2018 has a support for \pL
but way far to be implemented by all major browsers.
如果是个人喜好,则可以稍微减少这种丑陋感:
If it's a personal taste, you could reduce this ugliness a bit:
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);
这篇关于JavaScript正则表达式没有\ p {L}吗?在JS正则表达式中使用Unicode的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!