如果我有这样的字符串
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
换句话说,标点符号被丢弃,空格用连字符替换。
答案 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中)