Php 名称字段的正则表达式

Php 名称字段的正则表达式,php,javascript,regex,Php,Javascript,Regex,我正在使用此代码,但它不能正确地用于-(电源)符号 如果字符串如下所示,则上面的代码不起作用:name 我想用这段代码做的是: 名称大多数以字母数字开头,也可以以字母结尾,它可以有这些符号(.-),但只能在中间 name => true Name_ => false Name_sa => true name._ => false name.-as => false name应该可以使用。如果你想要像“代码>名字”之类的东西作为< /代码>来工作,你需要把 >

我正在使用此代码,但它不能正确地用于-(电源)符号

如果字符串如下所示,则上面的代码不起作用:name

我想用这段代码做的是: 名称大多数以字母数字开头,也可以以字母结尾,它可以有这些符号(.-),但只能在中间

name => true
Name_ => false
Name_sa => true
name._ => false  
name.-as => false

name
应该可以使用。如果你想要像“代码>名字”之类的东西作为< /代码>来工作,你需要把<代码> <代码> > <代码> */Cord>以允许中间有多个字符。

<代码>名称> <代码>应该起作用。如果你想用“<代码>名字> -<代码>工作,你需要将<代码> <代码> > <代码> *>代码>允许中间有多个字符。

我认为应该这样做:

^[^\W_]+([_.-][^\W_]+)?$

这里的
[^\W\u]
只匹配除非单词字符以外的任何字符和
,因此基本上除了
之外的任何单词字符。这是必要的,因为
\w
确实包含
\u

我认为应该这样做:

^[^\W_]+([_.-][^\W_]+)?$

这里的
[^\W\u]
只匹配除非单词字符以外的任何字符和
,因此基本上除了
之外的任何单词字符。这是必要的,因为
\w
确实包含
\u

该正则表达式有两个主要问题:

  • 您忘记了允许多次重复期末考试\w
  • 您只允许在名称中使用其中一个特殊符号
此外,您还可以使用+,而不是{1},这使它更具可读性。所以这个正则表达式应该实现您想要的:

/^\b\w[\w\UUK.-]*\w\b$/


该正则表达式有两个主要问题:

  • 您忘记了允许多次重复期末考试\w
  • 您只允许在名称中使用其中一个特殊符号
此外,您还可以使用+,而不是{1},这使它更具可读性。所以这个正则表达式应该实现您想要的:

/^\b\w[\w\UUK.-]*\w\b$/


不,他不想叫名字.-as工作。在他的问题中被标记为错误。@SebastianWramba我认为你是对的。不清楚给出的示例是否是期望的输出。不,他不想让
name.-as
工作。在他的问题中被标记为错误。@SebastianWramba我认为你是对的。不清楚,所给出的例子是期望的输出,而<<代码> >在<代码> [-[-] ] < /代码>中匹配没有中间特殊字符的单词。噢,对不起。第一个<代码> +/>代码覆盖它。<代码> <代码> > <代码> [代码] >代码>,以匹配中间没有特殊字符的单词。噢,对不起。第一个
+
涵盖了它。请注意
\u
\w
字符类的一部分,因此可以忽略显式提及它(下划线将在开始/结束处匹配)。请注意
\u
\w
字符类的一部分,因此可以忽略显式提及它(该下划线将在开始/结束处匹配)。输入[name]用于评论,对所有访问者免费:)这就是为什么:)输入[name]用于评论,对所有访问者免费:)这就是为什么:)