需要Javascript中正则表达式的帮助吗

需要Javascript中正则表达式的帮助吗,javascript,regex,Javascript,Regex,该框应允许: 大写和小写字母(不区分大小写) 数字0到9 字符,!#$%&'*+-/=?^`{|}~ 字符“.”,前提是它不是第一个或最后一个字符 您可以执行以下操作: ^[a-zA-Z0-9,!#$%&'*+-/=?^_`{|}~][a-zA-Z0-9,!#$%&'*+-/=?^_`{|}~.]*[a-zA-Z0-9,!#$%&'*+-/=?^_`{|}~]$ 您可以执行以下操作: ^[a-zA-Z0-9,!#$%&'*+-/=?^_`{|}~][a-zA-

该框应允许:

  • 大写和小写字母(不区分大小写)
  • 数字0到9
  • 字符,!#$%&'*+-/=?^`{|}~
  • 字符“.”,前提是它不是第一个或最后一个字符

您可以执行以下操作:

^[a-zA-Z0-9,!#$%&'*+-/=?^_`{|}~][a-zA-Z0-9,!#$%&'*+-/=?^_`{|}~.]*[a-zA-Z0-9,!#$%&'*+-/=?^_`{|}~]$

您可以执行以下操作:

^[a-zA-Z0-9,!#$%&'*+-/=?^_`{|}~][a-zA-Z0-9,!#$%&'*+-/=?^_`{|}~.]*[a-zA-Z0-9,!#$%&'*+-/=?^_`{|}~]$

试着这样做:

// the '.' is not included in this:
var temp = "\\w,!#$%&'*+/=?^`{|}~-";

var regex = new RegExp("^["+ temp + "]([." + temp + "]*[" + temp + "])?$");
//                                      ^
//                                      |
//                                      +---- the '.' included here
看看你的评论,很明显你不知道角色类到底做什么。不需要用逗号分隔字符。字符类:

[0-9,a-z]
匹配单个(ascii)数字或小写字母或逗号。请注意,
\w
是一个“速记类”,相当于
[a-zA-Z0-9.]

有关字符类的更多信息,请参见:


试试这样的方法:

// the '.' is not included in this:
var temp = "\\w,!#$%&'*+/=?^`{|}~-";

var regex = new RegExp("^["+ temp + "]([." + temp + "]*[" + temp + "])?$");
//                                      ^
//                                      |
//                                      +---- the '.' included here
看看你的评论,很明显你不知道角色类到底做什么。不需要用逗号分隔字符。字符类:

[0-9,a-z]
匹配单个(ascii)数字或小写字母或逗号。请注意,
\w
是一个“速记类”,相当于
[a-zA-Z0-9.]

有关字符类的更多信息,请参见:

试试看

^(?!\.)(?!.*\.$)[\w.!#$%&'*+\/=?^`{|}~-]*$
说明:

^         # Anchor the match at the start of the string
(?!\.)    # Assert that the first characters isn't a dot
(?!.*\.$) # Assert that the last characters isn't a dot
[\w.!#$%&'*+\/=?^`{|}~-]*   # Match any number of allowed characters
$         # Anchor the match at the end of the string
试一试

说明:

^         # Anchor the match at the start of the string
(?!\.)    # Assert that the first characters isn't a dot
(?!.*\.$) # Assert that the last characters isn't a dot
[\w.!#$%&'*+\/=?^`{|}~-]*   # Match any number of allowed characters
$         # Anchor the match at the end of the string

我会这样做:

/^[\w!#$%&'*+\/=?^`{|}~-]+(?:\.[\w!#$%&'*+\/=?^`{|}~-]+)*$/
第一部分至少需要匹配一个非点字符,但其他所有部分都是可选的,允许它只匹配一个字符串和一个(非点)字符。每当遇到一个点时,后面必须至少有一个非点字符,因此它与以点开头或结尾的字符串不匹配


它也不会匹配包含两个或多个连续点的字符串。您没有指定这一点,但当人们要求这样的模式时,这通常是一个要求。如果要允许连续点,只需将
\.
更改为
\.+

以下是我的操作方法:

/^[\w!#$%&'*+\/=?^`{|}~-]+(?:\.[\w!#$%&'*+\/=?^`{|}~-]+)*$/
第一部分至少需要匹配一个非点字符,但其他所有部分都是可选的,允许它只匹配一个字符串和一个(非点)字符。每当遇到一个点时,后面必须至少有一个非点字符,因此它与以点开头或结尾的字符串不匹配


它也不会匹配包含两个或多个连续点的字符串。您没有指定这一点,但当人们要求这样的模式时,这通常是一个要求。如果要允许连续点,只需将
\.
更改为
\.+

您已经试过了吗?如果是这样的话,你也可以发布它吗?var ex=new RegExp(“[a-z,0-9,!,#,$,%,,&,*,+,-,/,=,?,^,{,
,{,|,},~][a-z,0-9,!,#,$;我不知道如何创建第一个字符与[a-z]和[0-9]以及[%$#]等匹配的正则表达式。我们是否使用逗号来表示这些字符?您已经尝试过了吗?如果是这样的话,你也可以发布它吗?var ex=new RegExp(“[a-z,0-9,!,#,$,%,,&,*,+,-,/,=,?,^,{,
,{,|,},~][a-z,0-9,!,#,$;我不知道如何创建一个正则表达式,其中第一个字符与[a-z]和[0-9]以及[%$#]等匹配。我们是否使用逗号来表示这些字符?我喜欢
temp
技巧以避免某些重复,但它隐藏了这样一个事实:
-
不再是类中的最后一个字符:你最终得到的是
[~-.]
(但我不确定它的作用是什么).我试过了,结果是“无效字符范围”,因为temp中temp变量的最后一个字符是破折号,它应该被引用。之后应添加行边界,以确保第一个和最后一个“组”实际上是第一个和最后一个字符。这是我的编辑:var temp=“\\w,!\$%&'*+/=?^`{124;}~\\-”;var regex=new RegExp(“^[“+temp+”][“+temp+”]*[“+temp+”]$”);但这只适用于字符串中至少两个字符。例如,它与“a”不匹配,我喜欢
temp
技巧以避免某些重复,但它隐藏了一个事实,即
-
不再是类中的最后一个字符:你最终得到的是
[~-.]
(虽然我不确定它是做什么的)。我尝试了,结果得到的是“无效字符范围”由于temp中temp变量的最后一个字符是破折号,因此应将其引用。之后应添加行边界,以确保第一个和最后一个“组”实际上是第一个和最后一个字符。这是我的编辑:var temp=“\\w,!\$%&'*+/=?^`{124;}~\\-”;var regex=new RegExp(“^[“+temp+”][“+temp+”]*[“+temp+”]$”);但这只适用于字符串中至少两个字符。例如,它与“a”不匹配