6

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

作为一个例子(stadtbezirkspräsident'应该成为stadtbezirkspräsident.

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

string.replace(/[&\/\\#,+()$~%.'":*?<>-_{}]/g,' ');

但仍有许多特殊字符,Ø如左。

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

4

3 回答 3

6

尝试使用技巧

str.replace(/(?!\w)[\x00-\xC0]/g, '')
于 2012-11-03T14:03:16.093 回答
6

如果您自己定义了所有 Unicode 范围,那将是很多工作。

XRexExp将 Steven Levithan 的包与 Unicode 附加组件一起使用并利用其 Unicode 属性快捷方式可能更有意义:

var regex = new XRegExp("\\P{L}+", "g")
string = XRegExp.replace(string, regex, "")
于 2012-11-03T14:04:06.663 回答
1

这更像是对 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 版已经发布,但没有新字母)。

于 2012-11-03T14:43:27.473 回答