我想添加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/