如何在JavaScript的正则表达式中使用Unicode字符组?

3

有没有一种方法可以在JavaScript中原生地使用像"\p {L}"这样的模式?

(我想这是Perl兼容语法)

我首先对Firefox支持以及可能的WebKit支持感兴趣。

4个回答

3
不,任何主流浏览器都没有原生支持\p{..}。但是,如果您使用XRegExp库及其Unicode插件,它可以在JavaScript中工作。

1
不,JavaScript 的语法稍有不同。要捕获 Unicode,您必须使用字符选择器,例如 \uXXXX。但是,实际上,如果您的页面和文件都是 UTF-8 格式,则在范围 [абвг] 内设置非 ASCII 字符也可以使用。

http://www.javascriptkit.com/jsref/regexp.shtml


1

很遗憾,不行。你只能在通常的语法中指定一组字符,在方括号中写入字符和范围,但这变得很麻烦,因为例如字母散布在Unicode空间中,其他字符也散布在它们之间。

有一个低效的解决方法:从Unicode网站获取UnicodeData.txt文件,将其内容作为数据放入JavaScript代码中,并进行解析。然后,您可以将数据存储在对象数组中,包含Unicode属性(例如gc(通用类别)),该属性告诉您字符是否为字母。但即使如此,您也只能将数据用于简单测试,而不能将其用作regexp的组成部分。

理论上,您可以使用数据构建regexp...但它会相当大。


好的,这很糟糕。而且难以置信。顺便感谢你的回答 :) - user652649

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接