0

我有这个 HTML 中的模式示例 pattern="[a-zA-Z0-9-_. ]{1,30}"。这意味着只-_.允许使用字母数字 and ,但我想制作一个类似于 in 的模式,preg_replace它允许所有内容,但不允许[ <>/\:*?"|].

那么我该怎么做呢?

4

3 回答 3

1

您可以尝试以下方法:

$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 />
于 2013-04-23T18:22:47.910 回答
0

字符类中的^运算符将否定整个类,因此您可以使用:

[^<>/\:*?"|]

它将匹配字符类中的那些字符之外的所有内容。请记住,如果属性"的周围引号也是如此,您可能必须转义。pattern"

于 2013-04-23T18:23:17.853 回答
0

正则表达式中的负字符类是这样完成的:[^characters to exclude]

注意^只是在里面[,这就是使它成为负数的原因。

也就是说,你可能应该坚持你所拥有的,否则你会得到像我这样的人试图输入ヴィックサ 的名字:p

于 2013-04-23T18:23:36.637 回答