1

我想使用preg_match只允许几个字符,更准确地说,我只想允许这些字符:a-z A-Z 0-9 . , ( ) @ # ! ?

如何使用preg_replace, 检查文本是否包含超过这些字符?

4

2 回答 2

2

如果要从字符串中删除除您指定的字符之外的所有字符,您可以使用:

$sanitized = preg_replace('/[^a-zA-Z0-9\.\,\(\)@#!?]/', '', $string);
于 2013-06-02T11:46:06.783 回答
2

为了测试您的字符串是否包含无效字符,您可以执行以下操作:

if ( preg_match('/[^a-zA-Z0-9.,()@#!?]/', $string) )
    echo 'At least ONE invalid character found!';

我不确定我是否完全理解你想要什么,但这里有一些你可以使用的正则表达式:

if ( preg_match('/^[^a-zA-Z0-9.,()@#!?]+$/', $string) )
    echo 'All characters are invalid!';

if ( preg_match('/^[a-zA-Z0-9.,()@#!?]+$/', $string) )
    echo 'All characters are valid!';
于 2013-06-03T08:08:02.523 回答