如果字符串以点开头或结尾,如何使字符串无效?

时间:2016-02-11 00:01:22

标签: php regex

例如,我希望.brewpixelsbrewpixels.回显

  

您的用户名无效

如果点位于第一个和最后一个字母之间的任何位置,则脚本应该回显

  

您的用户名很好

如何更改正则表达式以实现此目的?

$username = 'brew.pixels';

if(preg_match('/(^\d|[^\w])/', $username)){
    echo 'your username is invalid';
} else {
    echo 'your username is good';
}

2 个答案:

答案 0 :(得分:3)

以下内容将匹配以点开头或结尾的字符串

(诀窍是逃避点,因为它在正则表达式中具有特殊含义)

/^\.|\.$/

created a ticket at user voice

附加条件only alpha num underscore and dot within the body

/^(\.[\w.]+|[\w.]+\.)$/

DEMO

只需在您给定的代码中替换:

if(preg_match(regexToMatchBadWords, $username)){
    echo 'your username is invalid';
} else {
    echo 'your username is good';
}

或者,你可以通过强制第一个和第二个来直接匹配正确的单词。最后的字符是alpha-num-underscore,内部的主体也接受点:

/^(\w[\w.]+\w)$/

DEMO

这颠倒了代码中的逻辑:

if(preg_match(/^(\w[\w.]+\w)$/, $username)){
    echo 'your username is good';
} else {
    echo 'your username is invalid';
}

答案 1 :(得分:1)

我不确定你是否想要它有其他的正则表达式信息,但你可以这样做:

if (preg_match('/^\./', $username) || preg_match('/\.$/', $username) {
  echo 'invalid';
}

这将使.brew和brew。失败。

我忘记了管道角色,请参阅Enissays回答正确的简单方法。