在Javascript中需要有关正则表达式的帮助

时间:2011-01-31 07:42:15

标签: javascript regex

该框应允许:

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

4 个答案:

答案 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_]

的“简写类”

有关字符类的更多信息,请访问:

http://www.regular-expressions.info/charclass.html

答案 2 :(得分:0)

您可以执行以下操作:

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

答案 3 :(得分:0)

我将如何做到这一点:

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

第一部分需要匹配至少一个非点字符,但其他所有字符都是可选的,允许它匹配只有一个(非点)字符的字符串。每当遇到一个点时,必须跟随至少一个非点字符,因此它不匹配以点开头或结尾的字符串。

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