如果您只需要一个可识别Unicode的正则表达式,那么您可能不想为整个XRegExp库+其Unicode插件提供这个功能。另一种解决方案是使用构建脚本,使用Regenerate和the Unicode data packages编译正则表达式。
这里是一个什么样子的Node.js的:
var regenerate = require('regenerate');
// Latin script
var Latin = require('unicode-7.0.0/scripts/Latin/code-points');
// Greek script
var Greek = require('unicode-7.0.0/scripts/Greek/code-points');
var set = regenerate() // Start with an empty set.
.add(Latin) // Add Latin script code points.
.add(Greek) // Add Greek script code points.
// Print the result.
console.log(set.toString());
运行npm install regenerate unicode-7.0.0
,然后如下运行此脚本:
node generate-regular-expression.js
它输出以下:
[A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u0370-\u0373\u0375-\u0377\u037A-\u037D\u037F\u0384\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03E1\u03F0-\u03FF\u1D00-\u1D2A\u1D2C-\u1D77\u1D79-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FC4\u1FC6-\u1FD3\u1FD6-\u1FDB\u1FDD-\u1FEF\u1FF2-\u1FF4\u1FF6-\u1FFE\u2071\u207F\u2090-\u209C\u2126\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A]|\uD800[\uDD40-\uDD8C\uDDA0]|\uD834[\uDE00-\uDE45]
这可以直接用作正则表达式文字的一部分。
这种方法的主要优点是你永远不必手动调整正则表达式。相反,您可以通过添加或删除某些符号来更改生成该脚本的脚本,然后再次运行它。该脚本的代码比任何正则表达式,恕我直言,更易于阅读和维护。另外,输出结果尽可能的紧凑:而不是将整个库作为运行时依赖项引入,只需插入一个正则表达式即可。
补充......上面的网站上的“Zyyy”是“Common”的昵称 – user2716342
'\ p {Script:Latin}'这些在JavaScript上不受支持。 http://www.regular-expressions.info/refunicode.html – Mouser
感谢Mouser。您提供的这个网站表示\ p {Common}或\ p {Greek}可以在PHP和JAVASCRIPT上使用XRegExp。虽然这个理想可能是全面的,不需要插件,但这对我来说已经很有帮助。在Chrome和Firefox中测试,并且工作。感谢U.http://www.regular-expressions.info/unicode.html#script – user2716342