Javascript 替换所有非单词字符,如?*+#

Javascript 替换所有非单词字符,如?*+#,javascript,regex,character,match,Javascript,Regex,Character,Match,我需要一些帮助来替换字符串中的所有非单词字符 例如,(statbezirkspräsident'应该变成statbezirkspräsident 这个正则表达式应该适用于所有语言,所以有点棘手,因为我不知道如何匹配像ñ或œ这样的字符 string.replace(/[&\/\\#,+()$~%.'":*?<>-_{}]/g,' '); string.replace(/[&\/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\,+()$~%.”“

我需要一些帮助来替换字符串中的所有非单词字符

例如,
(statbezirkspräsident'
应该变成
statbezirkspräsident

这个正则表达式应该适用于所有语言,所以有点棘手,因为我不知道如何匹配像
ñ
œ
这样的字符

string.replace(/[&\/\\#,+()$~%.'":*?<>-_{}]/g,' ');
string.replace(/[&\/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\,+()$~%.”“:*?-{}]/g,”);
但是仍然有很多特殊的字符,比如
Ø
left

也许有一个通用的选择器,或者以前有人解决过这个问题?

尝试使用这个技巧

str.replace(/(?!\w)[\x00-\xC0]/g, '')

如果您已经自己定义了所有Unicode范围,那么将需要大量的工作

使用Steven Levithan的并利用其Unicode属性快捷方式可能更有意义:

var regex = new XRegExp("\\P{L}+", "g")
string = XRegExp.replace(string, regex, "")

这更多的是对Tim Pietzcker的回答的评论,但是在评论中呈现代码是很尴尬的……下面是一个使用XRexExp包的简单示例:

<p id=orig>Bundespräsident / ß+ð/ə¿α!</p>
<p id=new></p>
<script src="http://cdnjs.cloudflare.com/ajax/libs/xregexp/2.0.0/xregexp-min.js">
</script>
<script src="http://xregexp.com/addons/unicode/unicode-base.js">
</script>
<script>
var regex = new XRegExp("\\P{L}+", "g");
var string = document.getElementById('orig').innerHTML;
string = XRegExp.replace(string, regex, "");
document.getElementById('new').innerHTML = string;
</script>

Bundespräsident/ß+ð/əäα

var regex=new XRegExp(“\\P{L}+”,“g”); var string=document.getElementById('orig').innerHTML; string=XRegExp.replace(字符串,regex,“”); document.getElementById('new')。innerHTML=string;
对于生产使用,您可能需要下载一些基本包和Unicode插件的版本,并在服务器上使用它们

注意:代码检查Unicode中未分类为字母(字母)的字符。我想这与您所说的“单词字符”相对应,尽管自然语言中的单词可能包含连字符、撇号和其他非字母


请注意,在Unicode中添加了字符,并且字符的类别可能(很少)发生更改。不过,该软件包维护良好;它对应于Unicode 6.1(版本6.2已过时,但没有新的字母)。

Ø是各种语言中的字母(例如,丹麦语):)类似的问题:javascript正则表达式没有任何本地unicode感知matchers@TimPietzcker-我知道,但我的解决方案只删除了低十六进制范围内的特殊字符(是的,你不是在我写评论的时候编辑的吗?)-好的,但仍然有足够多的字符不会被此捕获(即使在8位ANSI集合中:
×
÷
也会浮现在脑海中)。答案是错误的,因为它没有区分拉丁语补遗1中的字母和非字母。此外,问题明确地说:“这个正则表达式应该适用于所有语言”。@JukkaK.Korpela-即使
\p{L}
也不是一个好的正则表达式,因为它是”“分类字母”,不是一个非单词类。但无论如何,请欣赏你们的投票……我仍然相信我的解决方案是OP需要的,即使我同意它不是100%复杂和正确的。我也不认为这个答案值得投反对票。问题的定义不够明确,无法决定哪种解决方案是最好的。