此处是我的代码,仅允许a-z和0-9。如果我想要一个类似的regExp,它不允许任何包含点(。)的字符串,我将如何修改它?
if ( preg_match('/^[a-z0-9_]+$/',$myExtraField) == false ) {
这是在symfony2表单类中,不确定regExp是否与flat PHP相同,因此我包含了我现在的regExp ...从来没有时间潜入regExp并且几乎没有使用它。
答案 0 :(得分:3)
你可以做的最简单的检查是
strpos($myExtraField, ".") === false
如果你真的想使用正则表达式,可以反转preg_match("/\./")
或只做一下preg_match("/^[^.]*$/")
答案 1 :(得分:1)
FWIW,你的正则表达式也允许使用下划线(“_”)字符。
如果你想要一个不允许使用点的正则表达式,你可以简单地测试一个点的存在,并改变你的测试感:
if ( preg_match('/\./',$myExtraField) == true ) {
或者,使用strpos
:
if (strrpos($myExtraField, '.') == -1) {
然后没有'。'在场......
答案 2 :(得分:1)
在正则表达式中,您可以使用^
排除字符。
因此/^[^.]+$/
将匹配任何不包含任何点的字符串。
^
表示'开始字符串'[^.]+
表示在leat one char $
表示字符串的结尾如果您想匹配空字符串,请使用*
代替+
。
答案 3 :(得分:0)
如果必须使用正则表达式,请使用以下内容:
if (preg_match('/^[^.]*$/',$myExtraField)) {
// doesn't contain period
} else {
// does contain period
}
表达式:
^[^.]*$
可视化: