这是我有的正则表达式,我需要确保字符串不会以下划线开头或结尾,下划线可能会出现在两者之间。如何更新此REGEX以确保字符串在末尾没有_(下划线)或指向
/^[a-zA-Z0-9_.-]+$/
我已经试过
(?!_)
但似乎并没有工作
允许的字符串:
abcd
abcd_123
不允许字符串:
abcd_
_abcd_123
这是我有的正则表达式,我需要确保字符串不会以下划线开头或结尾,下划线可能会出现在两者之间。如何更新此REGEX以确保字符串在末尾没有_(下划线)或指向
/^[a-zA-Z0-9_.-]+$/
我已经试过
(?!_)
但似乎并没有工作
允许的字符串:
abcd
abcd_123
不允许字符串:
abcd_
_abcd_123
不是太难!
/^[^_].*[^_]$/
“除了在线路(^[^_]
)的开始下划线的任意字符,那么任何字符(.*
),则除了行([^_]$
)结束前一个下划线的任何字符。”
这确实需要至少两个字符来验证字符串。如果你想允许一个人物台词:
/^[^_](.*[^_]|)$/
“除了下划线任何启动线,然后或者一些字符以及之前结束的线非下划线,或者仅仅是一个直接的最终的线。
/^[a-zA-Z0-9.-][a-zA-Z0-9_.-]+[a-zA-Z0-9.-]$/
尝试此
描述:
在第一部分中,[a-zA-Z0-9.-]
,正则表达式只允许小写和大写字母,数字,点和连字符。
在下一节[a-zA-Z0-9_.-]+
中,正则表达式查找单个或多个字符,它们是小写字母或大写字母,数字点,连字符或下划线。
最后一部分[a-zA-Z0-9.-]
与限制输入以下划线结束的第一部分相同。
这不会验证长度小于3的输入 – 2013-03-19 07:02:25
是否有任何方法可以使其更易读易懂。 – RailsEnthusiast 2013-03-19 07:19:53
你可以在倒数的方式处理这个,
检查所有那些不匹配的开始和结束强调这样的:
/^_|_$/
^_ #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
不容易我的朋友!这不会验证长度小于2的输入。由于该问题未指定此正则表达式的实际用法,因此我们也必须考虑这一点。 – 2013-03-19 07:40:15
谢谢..我正在寻找一个只允许这些字符的表达式[a-zA-Z0-9 _.-] – RailsEnthusiast 2013-03-19 07:40:34
请参阅我的编辑以包含单字符字符串。 – 2013-03-19 07:40:36