Jos*_*osh 2 php regex preg-replace
我想要阻止所有与这个正则表达式模式不匹配的字符:[a-zA-Z0-9_-].
通常我会这样做:
preg_replace("[a-zA-Z0-9_-]", "", $var);
Run Code Online (Sandbox Code Playgroud)
但显然这对我想要的东西产生了相反的效果.正则表达式中是否有NOT?我怎样才能删除任何与模式不匹配的字符?
谢谢.
这个:
preg_replace("[a-zA-Z0-9_-]", "", $var);
Run Code Online (Sandbox Code Playgroud)
除非输入字符串恰好是模式,否则甚至不会替换这些字符.通过使用[]as分隔符,它们与表达式本身的效果不同.您可以更改分隔符(例如:) /,或在模式中添加更多括号:
preg_replace("/[a-zA-Z0-9_-]/", "", $var); // this works
preg_replace("[[a-zA-Z0-9_-]]", "", $var); // this too
Run Code Online (Sandbox Code Playgroud)
现在,否定的模式中[],您使用^的开头:
preg_replace("/[^a-zA-Z0-9_-]/", "", $var);
Run Code Online (Sandbox Code Playgroud)
您还可以使用不敏感修饰符i来匹配lowercase(a-z)和uppercase(A-Z):
preg_replace("/[^a-z0-9_-]/i", "", $var); // same as above
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3545 次 |
| 最近记录: |