1
189
ES 6的情况
即将发布的ECMAScript语言规范第6版包括支持Unicode的正则表达式。必须使用
不过,在ES 6完成并在浏览器供应商中广泛采用之前,您仍然是自己的。 更新: 现在有了 a transpiler named regexpu 将ES6 Unicode正则表达式转换为等效的ES5。它可以用作构建过程的一部分。 Try it out online. ES 5及以下情况尽管JavaScript对Unicode字符串进行操作,但它没有实现Unicode感知的字符类,也没有POSIX字符类或Unicode块/子范围的概念。
|
2
46
由于也没有找到一个好的解决方案,我写了一个 script 很久以前,通过从unicode下载数据 specification (v.5.0.0)并为BMP中的每个unicode类别和子类别生成间隔(最近替换为 a small Java program 它使用自己的本地Unicode支持)。
基本上它会转换
例如,这样编写的Regex:
将转换为以下内容:
在实践中并没有经常使用它,但从我的测试来看,它似乎工作得很好,所以我在这里发布,以防有人发现它有用。尽管生成的正则表达式的长度(上面的示例在展开时有3591个字符),但性能似乎是可以接受的(请参见 tests 在jsFiddle;感谢@modiX和@Lwangaman的改进)。 这是 source (未加工,27.5KB; minified ,24.9KB,没什么好的。它 可以 通过取消对unicode字符的隐藏使其变小,但是OTOH将面临编码问题的风险,因此我将按原样离开。希望有了ES6这种东西就不再需要了。 更新 :这看起来与 XRegExp Unicode plug-in 由Tim Down提到,但在本例中使用的是常规JavaScript正则表达式。 |
3
44
就我个人而言,我不想仅仅为了获得这个功能而安装另一个库我的答案不需要任何外部库,除了JavaScript之外,它还可以对regex风格进行少量修改。 Unicode的 website 提供一种将Unicode类别转换为一组代码点的方法。因为它是 Unicode码 网站上的信息应该是准确的。
注意,您需要排除高端字符,因为JavaScript只能处理小于
以下是不同Unicode属性的一些常见扩展:
该页还可以识别一些不明显的字符类,例如
最后,可以将一个char类插入到多个Unicode属性中,以获得比仅通过组合它们得到的更短的regex(只要选中某些设置)。 |
4
30
正如在其他答案中提到的,JavaScript正则表达式不支持Unicode字符类。然而,有一个图书馆确实提供了这一点:史蒂文·莱维汉的 XRegExp 及其 Unicode plug-in . |
5
18
例如:
以下是一些完美的参考资料: Unicode range RegExp generator |
6
14
2019年2月:
看来regexp
这是一个 working example 我报告了这个错误 here . |
7
8
在JavaScript中,w和d是ASCII,而s是Unicode。别问我为什么。JavaScript确实支持带有Unicode类别的\p,您可以使用它来模拟支持Unicode的\w和\d。 供使用(数字) For\w使用[\p{L}\p{N}\p{Pc}\p{M}(字母、数字、下划线、标记) 更新: 不幸的是,我错了。JavaScript也不正式支持\p,尽管有些实现可能仍然支持它。JavaScript regex中唯一的Unicode支持是用uFFFF匹配特定的代码点。可以在字符类的范围内使用这些字符。 |
8
8
这样做:
它显式地选择一个unicode字符范围。 它对拉丁字符有效,但其他奇怪的字符可能超出此范围。 |
9
3
如果你正在使用 Babel 然后 unicode support 已经可用。
我还发布了一个插件,它可以转换您的源代码,以便您可以编写如下正则表达式
以下是插件的项目页面: https://github.com/danielberndt/babel-plugin-utf-8-regex |
10
2
您还可以使用:
|
ajai.s · 根据用户偏好改变网络a帧中的化身 2 年前 |
atdyer · 使用svg变换更新位置时,力模拟会出现抖动 6 年前 |
Murasaki Aikon · 为什么firefox中未定义事件? 6 年前 |
patrick · 删除svg上的“全选”蓝色水滴单击 6 年前 |