2011-08-11 72 views
0

当我尝试验证用户名时,收到此错误消息以下pregexp字符串是:^([a-zA-Z])[a-zA-Z_-]*[\w_-]*[\S]$|^([a-zA-Z])[0-9_-]*[\S]$|^[a-zA-Z]*[\S]$^。想不到的,但没有任何工程警告:preg_match()[function.preg-match]:未知修饰符'('in

这些都是我曾尝试以下可能的解决方案,但未能:

^([a-zA-Z])[a-zA-Z_-]*[\/w_-]*[\/S]$|^([a-zA-Z])[0-9_-]*[\/S]$|^[a-zA-Z]*[\/S]$^ 
/^([a-zA-Z])[a-zA-Z_-]*[\/w_-]*[\/S]$|^([a-zA-Z])[0-9_-]*[\/S]$|^[a-zA-Z]*[\/S]$^/ 
~^([a-zA-Z])[a-zA-Z_-]*[\/w_-]*[\/S]$|^([a-zA-Z])[0-9_-]*[\/S]$|^[a-zA-Z]*[\/S]$^~ 
#^([a-zA-Z])[a-zA-Z_-]*[\/w_-]*[\/S]$|^([a-zA-Z])[0-9_-]*[\/S]$|^[a-zA-Z]*[\/S]$^# 

我希望你能帮助我 在此先感谢

+0

什么错误信息? – Nickool

+0

@Negin:阅读题目标题。 – icktoofay

+1

你想在用户名中允许什么? – 2011-08-11 05:10:00

回答

1

你的正则表达式与^启动,因此这被解释为delimiter

稍后,您的正则表达式会在其中包含一个^,并且由于它未转义,因此它将被解释为正则表达式的模式部分的结尾。

紧接在第二个^之后,您的正则表达式将包含一个(。在preg_match中,关闭分隔符之后的任何内容都被解释为modifier(不是修饰符。要修复它,你需要read the PHP manual page on delimiters

我会假设你想是这样的:

/^([a-zA-Z])[a-zA-Z_-]*[\w_-]*[\S]$|^([a-zA-Z])[0-9_-]*[\S]$|^[a-zA-Z]*[\S]$/ 

在你的第一个例子,它看起来像你忘了添加任何分隔符,和^并不打算作为分隔符。在随后的添加分隔符的示例中,您没有告诉我们这些问题是什么(可能它们应该是不同的问题?)。

-1
#^([a-zA-Z])[a-zA-Z_-]*[\/w_-]*[\/S]$|^([a-zA-Z])[0-9_-]*[\/S]$|^[a-zA-Z]*[\/S]$^# 

您遇到的问题是[\/S]。这会强制用户名以S或正向/斜线结尾。你打算在那里写[\S]。 (虽然我不知道什么这样做的目的是,这将使任何非空格字符结尾。)

相关问题