该框应允许:
答案 0 :(得分:3)
尝试
^(?!\.)(?!.*\.$)[\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
答案 1 :(得分:1)
尝试这样的事情:
// 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_]
有关字符类的更多信息,请访问:
答案 2 :(得分:0)
您可以执行以下操作:
^[a-zA-Z0-9,!#$%&'*+-/=?^_`{|}~][a-zA-Z0-9,!#$%&'*+-/=?^_`{|}~.]*[a-zA-Z0-9,!#$%&'*+-/=?^_`{|}~]$
答案 3 :(得分:0)
我将如何做到这一点:
/^[\w!#$%&'*+\/=?^`{|}~-]+(?:\.[\w!#$%&'*+\/=?^`{|}~-]+)*$/
第一部分需要匹配至少一个非点字符,但其他所有字符都是可选的,允许它匹配只有一个(非点)字符的字符串。每当遇到一个点时,必须跟随至少一个非点字符,因此它不匹配以点开头或结尾的字符串。
它也不会匹配其中包含两个或更多连续点的字符串。您没有指定,但通常是人们要求这样的模式时的要求之一。如果您想允许连续点,只需将\.
更改为\.+
。