我只需要允许字母,数字和下划线(_)。
其他任何东西都替换为空格符号(_)。
我的正则表达式模式有什么问题?
<?php
$val = 'dasd Wsd 23 /*~`';
$k = preg_replace('/[a-Z0-9_]+$/', '_', $val);
?>
答案 0 :(得分:3)
您需要添加^
,它会反转字符类中匹配的字符。
$val = 'dasd Wsd 23 /*~`';
$k = preg_replace('/[^a-zA-Z0-9_]/', '_', $val);
另一种方法是让它与非“单词”字符匹配,这不是字母,数字或下划线。
$val = 'dasd Wsd 23 /*~`';
$k = preg_replace('/\W/', '_', $val);
答案 1 :(得分:0)
[a-Z]
不匹配任何内容..您可以使用\W
来匹配非单词字符:
preg_replace('/\W+/', '_', $val)
此外,$
符号仅匹配字符串末尾。