我正在创建一个检测并删除字符串中所有尾随特殊字符的函数。它可以转换字符串,如:
进入“hello-world”。
任何人都知道没有编写大量代码的技巧吗?
答案 0 :(得分:1)
只是为了好玩
[^a-z\s]+
<强>解释强>
[^x]
:一个不是x sample的字符
\s
:&#34;空格字符&#34;:空格,制表符,换行符,回车符,垂直标签sample
+
:一个或多个sample
PHP:
$re = "/[^a-z\\s]+/i";
$str = "Hello world\nhello world/\nhello world--\nhellow world/%--+...";
$subst = "";
$result = preg_replace($re, $subst, $str);
答案 1 :(得分:1)
试试这个
$string = preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars.
或从字符串中删除撇号
preg_replace('/[^A-Za-z0-9\-\']/', '', $string); // escape apostraphe
答案 2 :(得分:1)
您可以使用这样的正则表达式,具体取决于您对“特殊字符”的定义:
function clean_string($input) {
return preg_replace('/\W+$/', '', $input);
}
它替换字符串\W
末尾的任何不是单词字符($
)的字符。 \W
将与[^a-zA-Z0-9_]
匹配,因此任何非字母,数字或下划线的内容都将被替换。要指定哪些字符是特殊字符,请使用这样的正则表达式,将所有特殊字符放在[]
括号中:
function clean_string($input) {
return preg_replace('/[\/%.+-]+$/', '', $input);
}
答案 3 :(得分:0)
这是您正在寻找的。 :
([^\n\w\d \"]*)$
它删除任何不是字母,数字,空格和新行的内容。 只需将其称为:
preg_replace('/([^\n\w\s]*)$/', '', $string);