我使用以下正则表达式来转义特殊字符:
var searchForTest = text.replace(/[^a-zA-Z 0-9.]/gi,'.');
当文本是英文时,这可以正常工作,但是当我尝试高亮希腊字符时它会失败,因为它们被识别为特殊字符。
工作样本示例:English Characters
非工作样本Greek Characters
的示例由于
答案 0 :(得分:2)
当你处理希腊符号时,你应该使用unicode序列 由于希腊符号are in range \u0374 - \u03FF只是将此范围添加到正则表达式
中var searchForTest = text.replace(/[^a-zA-Z 0-9.\u0374-\u03FF]/gi,'.');
答案 1 :(得分:0)
JavaScript正则表达式对Unicode没有任何真正的了解;也就是说,没有类似“字母”或“数字”的Unicode识别字符类(只有“ASCII字母数字字符”),没有办法引用Unicode属性等等。所以你基本上有两个选择:
匹配任何不在您的特殊子集中的ASCII字符:
var searchForTest = text.replace(/(?=[\x20-\x7E])[^a-zA-Z 0-9.]/gi,'.');
(这有缺点,它不会识别卷曲引号,希腊语特定的标点符号等,作为特殊字符。)
匹配任何不在您特殊子集中的字符,并根据需要添加希腊字符和其他字符:
var searchForTest = text.replace(/[^a-zA-Z 0-9.α-ωΑ-Ω]/gi,'.');
(这方面的缺点很明显。)
你可以尝试将上述内容结合起来进行混合方法,但你永远不会完美。 : - /