PHP正则表达式仅允许使用字母数字,破折号,下划线

时间:2016-05-23 06:11:46

标签: php regex

我对使用正则表达式非常陌生,并且我只尝试仅允许A-Z, a-z, 0-9, -, _

我正在使用以下表达式:

preg_match('/^[a-zA-Z0-9-_]+$/i', $_POST['sign_up_username'])

我的问题是,这是否是正确的方法。我不确定这是否是发布此内容的正确位置。任何帮助都会很棒。感谢。

2 个答案:

答案 0 :(得分:2)

正则表达式不正确。在最后或开始移动-或在字符类中将其转义,因为-在字符类中具有特殊含义。它表示字符类中的range。你可以使用

^[-a-zA-Z0-9_]+$

另外

\w = [a-zA-Z0-9_]

所以,你可以使用

^[\w-]+$

此外,不需要i修饰符,最后是的,它只允许 AZ大写和小写,数字,破折号和下划线 < / p>

这在PHP中就足够了

preg_match('/^[\w-]+$/', $_POST['sign_up_username'])

答案 1 :(得分:0)

if(preg_match('/ ^ [a-zA-Z0-9 -_] + $ / i',$ str)== 1)

{

sinfo = []
for thisMatch in re.findall(r"<td>(.+?)</td>.+?<td>(.+?)</td>.+?<td>(.+?)</td>.+?<td>(.+?)</td>", match3, re.DOTALL):
    print(thisMatch[0], thisMatch[1], thisMatch[2])
    sinfo.append(scrapyitem(name=thisMatch[0], hp=thisMatch[1], email=thisMatch[2]))

try:
    for scrapyInfo in sinfo:
        scrapyInfo.save()
...

回音“是”;

}

否则

{

回声“不”;

}