我需要匹配电子邮件地址中的所有unicode字符。我可以在Java中使用\p{L}进行验证。在JS和C中是否有任何\p{L}等效项?如果没有,哪一个是最可靠的开源库,它在C和JavaScript中提供了这种功能?
h5qlskok1#
ECMAScript以及std::regex支持的所有其他风格不支持Unicode属性(Unicode类别类)。作为一种解决方法,请在C++中使用Boost library。在Boost中,按如下所示声明正则表达式:
std::regex
boost::wregex reg(L"^\\p{L}+$");
注意,^\p{L}+$只匹配1+个字母的字符串。在现代浏览器的JavaScript中使用的ECMAScript中,可以使用
^\p{L}+$
var str = "bębnić"; var regex = /^\p{L}+$/u; console.log(regex.test(str));
JavaScript中的XRegExp based solution,适用于较旧的浏览器(如Safari):一个二个一个一个
1条答案
按热度按时间h5qlskok1#
ECMAScript以及
std::regex
支持的所有其他风格不支持Unicode属性(Unicode类别类)。作为一种解决方法,请在C++中使用Boost library。
在Boost中,按如下所示声明正则表达式:
注意,
^\p{L}+$
只匹配1+个字母的字符串。在现代浏览器的JavaScript中使用的ECMAScript中,可以使用
JavaScript中的XRegExp based solution,适用于较旧的浏览器(如Safari):
一个二个一个一个