猿问

仅匹配unicode字母

我有以下仅允许字母的正则表达式:


     /[a-zA-Z]+/


     a = "abcDF"

     if (a.match(/[a-zA-Z]+/) == a){

        //Match

     }else{

        //No Match

     } 

如何使用p {L}(通用-任何语言,例如德语,英语等)来执行此操作


我试过了


  a.match(/[p{l}]+/)

  a.match(/[\p{l}]+/)

  a.match(/p{l}/)

  a.match(/\p{l}/)

但所有字母a =“ aB”均返回null


qq_花开花谢_0
浏览 679回答 2
2回答

料青山看我应如是

从ECMAScript 2018开始,JavaScript终于原生支持Unicode属性转义。对于较旧的版本,您要么需要自己定义所有相关的Unicode范围。或者,您可以将Steven Levithan的XRegExp程序包与Unicode附件一起使用,并利用其Unicode属性快捷方式:var regex = new XRegExp("^\\p{L}*$")var a = "abcäöüéèê"if (regex.test(a)) {    // Match} else {    // No Match}

肥皂起泡泡

如果您愿意使用Babel来构建您的JavaScript,那么我发布了一个babel插件,该插件可以将正则表达式转换为浏览器可以理解的正则表达式,/^\p{L}+$/或者将其转换/\p{^White_Space}/为正则表达式。
随时随地看视频慕课网APP
我要回答