2013-03-19 18 views

回答

1

不是太难!

/^[^_].*[^_]$/ 

“除了在线路(^[^_])的开始下划线的任意字符,那么任何字符(.*),则除了行([^_]$)结束前一个下划线的任何字符。”

这确实需要至少两个字符来验证字符串。如果你想允许一个人物台词:

/^[^_](.*[^_]|)$/ 

“除了下划线任何启动线,然后或者一些字符以及之前结束的线非下划线,或者仅仅是一个直接的最终的线。

+0

不容易我的朋友!这不会验证长度小于2的输入。由于该问题未指定此正则表达式的实际用法,因此我们也必须考虑这一点。 – 2013-03-19 07:40:15

+0

谢谢..我正在寻找一个只允许这些字符的表达式[a-zA-Z0-9 _.-] – RailsEnthusiast 2013-03-19 07:40:34

+0

请参阅我的编辑以包含单字符字符串。 – 2013-03-19 07:40:36

0
/^[a-zA-Z0-9.-][a-zA-Z0-9_.-]+[a-zA-Z0-9.-]$/ 

尝试此

描述:
在第一部分中,[a-zA-Z0-9.-],正则表达式只允许小写和大写字母,数字,点和连字符。
在下一节[a-zA-Z0-9_.-]+中,正则表达式查找单个或多个字符,它们是小写字母或大写字母,数字点,连字符或下划线。
最后一部分[a-zA-Z0-9.-]与限制输入以下划线结束的第一部分相同。

+1

这不会验证长度小于3的输入 – 2013-03-19 07:02:25

+0

是否有任何方法可以使其更易读易懂。 – RailsEnthusiast 2013-03-19 07:19:53

1

你可以在倒数的方式处理这个,

检查所有那些不匹配的开始和结束强调这样的:

/^_|_$/ 

^_   #starts with underscore 
|   #OR 
_$   #ends with underscore 

然后消除这些匹配。上面的正则表达式更容易阅读。

检查:http://www.rubular.com/r/H3Axvol13b

或者你可以尝试较长的正则表达式:

/^[a-zA-Z0-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.-]  #starts with a-z, or A-Z, or 0-9, or . - 
[a-zA-Z0-9_.-]* #anything that can occur and the underscore 
[a-zA-Z0-9.-]$  #ends with a-z, or A-Z, or 0-9, or . - 
|     #OR 
^[a-zA-Z0-9.-]$ #for one-letter words 
|     #OR 
^[a-zA-Z0-9.-][a-zA-Z0-9.-]$  #for two letter words 

检查:http://www.rubular.com/r/FdtCqW6haG

相关问题