php正则表达式不允许字符串中的DOT

时间:2014-01-06 16:00:49

标签: php regex

此处是我的代码,仅允许a-z和0-9。如果我想要一个类似的regExp,它不允许任何包含点(。)的字符串,我将如何修改它?

if ( preg_match('/^[a-z0-9_]+$/',$myExtraField) == false ) {

这是在symfony2表单类中,不确定regExp是否与flat PHP相同,因此我包含了我现在的regExp ...从来没有时间潜入regExp并且几乎没有使用它。

4 个答案:

答案 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
}

表达式:

^[^.]*$

可视化:

Regular expression visualization