我有这个 HTML 中的模式示例 pattern="[a-zA-Z0-9-_. ]{1,30}"
。这意味着只-_.
允许使用字母数字 and ,但我想制作一个类似于 in 的模式,preg_replace
它允许所有内容,但不允许[ <>/\:*?"|]
.
那么我该怎么做呢?
您可以尝试以下方法:
$test = "Hello [<>/\:*?\"|Mister] Jean-Samuels, how are you?_.";
echo preg_replace('/[^\d\w-_. ]+/', '', $test);
输出:
Hello Mister Jean-Samuels how are you_.
编辑:
这是您的 HTML 模式的JSFiddle。
HTML:
<input title='Enter anything but <, >, /, \, :, *, ?, ", |'
type='text'
pattern='[^<>\/\\:*?"|]{1,30}' required />
字符类中的^
运算符将否定整个类,因此您可以使用:
[^<>/\:*?"|]
它将匹配除字符类中的那些字符之外的所有内容。请记住,如果属性"
的周围引号也是如此,您可能必须转义。pattern
"
正则表达式中的负字符类是这样完成的:[^characters to exclude]
注意^
只是在里面[
,这就是使它成为负数的原因。
也就是说,你可能应该坚持你所拥有的,否则你会得到像我这样的人试图输入ヴィックサ 的名字:p