1

我需要带有连字符 ( -) 和下划线 ( _) 的字母数字字符串。但又不能一个人来-_必须有一些带有 or 的 aplha 或字母数字-文本_

abc- allowed
abc_abc-xyz allowed
abc896 allowed
89abc allowed
abc_ not allowed
abc- not allowed
- not allowed
_not allowed
-- not allowed
________ --- not allowed

这个:

^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$

表达式做上面提到的所有事情,但-我也想添加_下划线。并且不能在开始或结束时出现-_

4

5 回答 5

1

这是我将如何写这个:

^(?![-_])[-a-zA-Z0-9_]+(?<![-_])$

这是一个rubular:http ://www.rubular.com/r/7biWZhiiVn

^[-a-zA-Z0-9_]+$将是一个仅包含您想要的字符的字符串。前瞻和后瞻确保字符串不以 or 开头或-结尾_

您可能会更改[-a-zA-Z0-9_][-\w]since\w通常等同于[a-zA-Z0-9_],但 Unicode 选项可以更改含义以包含来自其他语言的字母。

于 2012-05-31T17:37:17.003 回答
0

你非常接近它:

^[0-9a-zA-Z]([-_]*[0-9a-zA-Z]+)*$

更好的可能是:

^[0-9a-zA-Z]([-_]+[0-9a-zA-Z]|[0-9a-zA-Z]+)*$
于 2012-05-31T17:29:49.440 回答
0

你可以试试这段代码:

^[a-zA-Z0-9]*[a-zA-Z0-9_-]+[a-zA-Z0-9]*$
于 2012-05-31T17:32:41.833 回答
0

我将其重写为:

^[a-zA-Z0-9]+([-_]*[a-zA-Z0-9]+)*$
于 2012-05-31T17:33:01.443 回答
0

这将允许单个-和/或_以任一顺序出现,但不能同时出现。也允许直接的字母数字:

^[a-zA-Z0-9]+[-_]{0,1}[^-_]+[-_]{0,1}[^-_]+$

这种替代方法似乎也有效:

^[^-_]+[-_]{0,1}[^-_]+[-_]{0,1}[^-_]+$
于 2012-05-31T18:14:47.610 回答