我需要一些帮助来替换字符串中的所有非单词字符。
作为一个例子(stadtbezirkspräsident'
应该成为stadtbezirkspräsident
.
这个正则表达式应该适用于所有语言,所以它有点棘手,因为我不知道如何匹配像ñ
or之类的字符œ
。我试着用
string.replace(/[&\/\\#,+()$~%.'":*?<>-_{}]/g,' ');
但仍有许多特殊字符,Ø
如左。
也许有一个通用的选择器,或者以前有人解决过这个问题?
我需要一些帮助来替换字符串中的所有非单词字符。
作为一个例子(stadtbezirkspräsident'
应该成为stadtbezirkspräsident
.
这个正则表达式应该适用于所有语言,所以它有点棘手,因为我不知道如何匹配像ñ
or之类的字符œ
。我试着用
string.replace(/[&\/\\#,+()$~%.'":*?<>-_{}]/g,' ');
但仍有许多特殊字符,Ø
如左。
也许有一个通用的选择器,或者以前有人解决过这个问题?
尝试使用技巧
str.replace(/(?!\w)[\x00-\xC0]/g, '')
如果您自己定义了所有 Unicode 范围,那将是很多工作。
XRexExp
将 Steven Levithan 的包与 Unicode 附加组件一起使用并利用其 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>
对于生产用途,您可能需要下载一些版本的基本包和 Unicode 插件并在您的服务器上使用它们。
注意:代码检查未分类为 Unicode 中字母(字母)的字符。我想这与您所说的“单词字符”相对应,尽管自然语言中的单词可能包含连字符、撇号和其他非字母。
请注意,字符会添加到 Unicode 中,并且字符的类别可能(很少)发生变化。不过,该软件包维护得很好;它对应于 Unicode 6.1(6.2 版已经发布,但没有新字母)。