php regex preg_match表达式测试A-Za-z0-9的字符串,空格字符和常见标点符号

时间:2018-05-05 00:44:01

标签: php regex preg-match

我在使用正则表达式时遇到了麻烦。我想使用php preg_match来确认字符串是否仅包含大写/小写字母,数字,空格和标点符号,如...

逗号,句号,加号,短划线,感叹号,冒号,分号,括号

问题:下面的例子中$ regex会等于什么?

<?php 
$regex = "??????";
$string = "some user input in a form passed via POST to form processor";
if (preg_match($regex, $string)) {
    echo "Found a match!";
} else {
    echo "The regex pattern does not match. :(";
}
?>

我观看了视频,谷歌搜索了几个小时但仍然无法做到这一点。

感谢您的帮助!

4 个答案:

答案 0 :(得分:1)

您可以使用character class列出要允许的字符。 如果您想匹配大写和小写字符,可以将A-Za-z缩短为a-z并指定不区分大小写的标记/i

断言字符串^开头的位置,匹配字符类中的字符一次或多次+,并在字符串$的末尾断言位置。

^[ a-z0-9,.+!:;()-]+$

<?php
$regex = "/^[ a-z0-9,.+!:;()-]+$/i";
$string = "some user input in a form passed via POST to form processor";
if (preg_match($regex, $string)) {
    echo "Found a match!";
} else {
    echo "The regex pattern does not match. :(";
}
?>

Test

答案 1 :(得分:0)

答案 2 :(得分:0)

尝试这种模式

$regex = "/^[A-Za-z0-9...]+$/";

您应该使用允许的特殊字符替换...9之间的3个点]

示例:

// Adding comma (,) only
$regex = "/^[A-Za-z0-9,]+$/";

// Adding comma (,) and period (.)
$regex = "/^[A-Za-z0-9,.]+$/";

// comma and plus sign (+) note that plus/minus signs need to be escaped \+\-
$regex = "/^[A-Za-z0-9,\+\]+$/";

你问的完整字符串是:

// comma, period, plus sign, dash, exclamation mark, colon, semi colon, parentheses, space is (\s)
$regex = "/^[A-Za-z0-9,.\+\-!:;()\s]+$/";

如果允许使用下划线字符(_),则可以使用[\w...]代替[A-Za-z0-9...]

您可以对其进行测试here

答案 3 :(得分:0)

所有答案都很有帮助。第四只鸟的答案对我有用。感谢。

我添加了一些额外的标点符号和3个需要转义的标记......并且(到目前为止)最终得到了...

$regex = "/^[ a-z0-9,.+!:;()-_\\\[\]]+$/i";

我发布的解释只是为了帮助其他可能会遇到此问题的人。希望它可以帮助别人帮助我。

对于任何可能需要它的人都会有解释(如果有任何修改,欢迎更正: - )

string validation: items within in [] are allowed
/   beginning regex expression delimiter
^   says start trying to match with 1st item in []
[   enclouses OK items - start
blank space character
a-z lower case letters
0-9 numbers
,   comma
.   period
+   plus sign
!   exclamation mark
:   colon
;   semicolon
(   open paren
)   close paren
-   dash
_   underscore
\\  back slash (note)
\[  open square bracket (note)
\]  close speare bracket (note)
]   encloses OK items - end
+   match indicated items 1 or more times
$   continue matching through the last item in the string
/   is the closing regex expression delimiter
i       case insensitive flag so upper and lower case letters will match

注意:前导反斜杠是转义字符