Javascript XRegExp将替换IE中的Unicode字符
我开发了一个javascript函数来清除一系列Unicode字符。例如,“ñeóñúa1.txt”=>“neonu a1.txt”。为此,我使用了一个正则表达式:Javascript XRegExp将替换IE中的Unicode字符,javascript,regex,unicode,xregexp,Javascript,Regex,Unicode,Xregexp,我开发了一个javascript函数来清除一系列Unicode字符。例如,“ñeóñúa1.txt”=>“neonu a1.txt”。为此,我使用了一个正则表达式: var = new RegExp patternA ("[\\u0300-\\u036F]", "g"); name = name.replace (patternA,''); 如果我的研究是正确的,IE不会以同样的方式检测Unicode。我正在尝试使用库XRegExp()创建一个等效函数,它与所有浏览器兼容,但我不知道如何编
var = new RegExp patternA ("[\\u0300-\\u036F]", "g");
name = name.replace (patternA,'');
如果我的研究是正确的,IE不会以同样的方式检测Unicode。我正在尝试使用库XRegExp()创建一个等效函数,它与所有浏览器兼容,但我不知道如何编写Unicode模式,以便XRegExp在IE中工作
失败的尝试之一:
XRegExp.replace(name,'\\u0300-\\u036F','');
如何构建此模式?作为
XRegExp.replace
方法的第二个参数提供的值应该是正则表达式对象,而不是字符串。正则表达式可以由XRegExp
或本机RegExp
构造函数构建。因此,以下两行是等效的:
name = name.replace(/[\u0300-\u036F]/g, '');
// Is equivalent to:
name = XRegExp.replace(name, /[\u0300-\u036F]/g, '');
但是,您编写的以下行无效:
var=new RegExp patternA(“[\\u0300-\\u036F]”,即“g”)代码>
相反,它应该是:
var patternA=newregexp(“[\\u0300-\\u036F]”,即“g”)代码>
我不知道这是否是你问题的根源,但也许。作为记录,IE的Unicode支持与其他浏览器一样好或更好
XRegExp可以让您通过名称识别块,而不是使用幻数XRegExp('[\\u0300-\\u036F]')
和XRegExp('\\p{InCombiningDiacriticalMarks}')
完全等效。但是,该块中的标记是所有组合标记的一小部分。实际上,您可能需要匹配类似于XRegExp('\\p{M}')
的内容。然而,请注意,简单地像你正在做的那样删除标记并不是删除变音符号的安全方法。一般来说,你试图做的是一个坏主意,应该避免,因为它通常会导致错误或无法理解的结果。。