如何使用正则表达式对字符串进行取消标记,小写,取消空格和连字符?

时间:2010-12-12 17:13:11

标签: regex string

如果我有这样的字符串

Newsflash: The Big(!) Brown Dog's Brother (T.J.) Ate The Small Blue Egg

如何使用正则表达式将其转换为以下内容:

newsflash-the-big-brown-dogs-brother-tj-ate-the-small-blue-egg

换句话说,标点符号被丢弃,空格用连字符替换。

3 个答案:

答案 0 :(得分:4)

听起来你想创建一个" URL插件" - 例如,文章标题的URL友好版本。这意味着您要确保删除所有可能的非URL友好字符,而不仅仅是少数几个。你可以这样做(按顺序):

删除所有非字母非数字非空格字符:
用空字符串[^A-Za-z0-9 ]替换正则表达式""

用短划线替换所有空格:
用字符串\s+替换正则表达式"-"

字符串小写:
Java s = s.toLowerCase();
JavaScript s = s.toLowerCase();
C#s = s.ToLowerCase();
Perl $s = lc($s);
Python s = s.lower()
PHP $s = strtolower($s);
Ruby s = s.downcase

答案 1 :(得分:1)

将正则表达式[\s-]+替换为"-",然后将[^\w-]替换为""

然后,请致电ToLowerCase或等效。

在Javascript中:

var s = "Newsflash: The Big(!) Brown Dog's Brother (T.J.) Ate The Small Blue Egg";
alert(s.replace(/[\s+-]/g, '-').replace(/[^\w-]/g, '').toLowerCase());

答案 2 :(得分:0)

/\W+/替换为' - ',用短划线替换所有非单词字符。

然后,将/-+/替换为' - '来折叠破折号。

然后,小写字符串 - 纯正则表达式解决方案不能这样做。你没有说你正在使用哪种语言,所以我不能给你一个例子,但你的语言可能有String.toLowercase()或tr///调用(tr/A-Z/a-z/,例如,在Perl中)