JavaScript正则表达式没有\ p {L}吗?在JS正则表达式中使用Unicode [英] No \p{L} for JavaScript Regex ? Use Unicode in JS regex

查看:115
本文介绍了JavaScript正则表达式没有\ p {L}吗?在JS正则表达式中使用Unicode的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我本想在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆