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


How do I make a string invalid if it begins or ends with a dot?

例如,我希望.brewpixelsbrewpixels.回显

您的用户名无效

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

您的用户名很好

如何更改正则表达式以完成此操作?

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

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

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

/^'.|'.$/

演示

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

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

演示

只需替换给定的代码:

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

或者,您可以通过强制第一个和最后一个字符为字母数字下划线并且内部主体也接受点来直接匹配正确的单词:

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

演示

这会反转代码中的逻辑:

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

我不确定您是否希望它有其他正则表达式信息,但您可以这样做:

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

这将使 .brew 和 brew. 失败。

我忘记了管道字符,请参阅Enissays答案以获取正确的更简单方法。