我对正则表达式很陌生。最近几个小时,我一直在阅读regex,以了解如何使用regex*实现以下目标,但运气不佳。我的大脑开始疼了。所以这个求助电话。下面是我要应用于数据输入字段的限制,我应该使用什么正则表达式?
一些有效的输入数据:
.abc_
__abc.d-e.
.__a.
.a__b.
_a-b.
abc
a___.感谢并致以问候
~插头
发布于 2013-06-04 13:17:22
你真的应该展示你到目前为止所展示的东西。
尽管如此,覆盖您的限制的正则表达式应该是这样的:
^[a-zA-Z0-9\._](?:[a-zA-Z0-9_]*(?:\.(?!\.))*(?:-(?!-))*[a-zA-Z0-9_]*)*[a-zA-Z0-9\._]$有些人很可能会有更好的格式,但在http://www.regex101.com/中,它似乎适用于我测试过的所有东西。
发布于 2013-06-04 13:29:45
这与单个正则表达式是非常混乱的。其实并不是不可能,但你会疯狂地跳起来去做,这样你最好写一个状态机。但是,使用一系列regex测试很容易做到这一点。
对于您的条件1和2,文本应该匹配以下内容(允许文本可能只有一个字符长):
^([a-z0-9._]|[a-z0-9._][a-z0-9_.-]*[a-z0-9._])$ 对于您的条件3,文本不应该匹配这些正则表达式之一(适当选择,您的规范不太清楚)。
.*[.-][.-].*
.*(.-|-.).*
.*(\.\.|--).*对于条件4,文本应该与以下内容相匹配:
.*[a-z0-9].* 我还没考虑到大写字符。如果需要,将这些添加到字符模式中。
发布于 2013-06-04 19:16:36
有趣的问题。可以用一个非平凡的正则表达式来解决。这里是Java语法(它要求正则表达式用字符串括起来)。
Pattern re_valid = Pattern.compile(
" # Regex to validate special word requirements. \n" +
" ^ # Anchor to start of string. And... \n" +
" (?=[A-Za-z0-9._]) # First char is alphanum, dot or underscore. And...\n" +
" (?=.*[A-Za-z0-9._]$) # Last char is alphanum, dot or underscore. And... \n" +
" (?=[^A-Za-z0-9]*[A-Za-z0-9]) # Contains at least one alphanum. \n" +
" (?: # Group two possible content formats. \n" +
" [A-Za-z0-9_]+ # Case 1: Begins with one or more non-[-.]. \n" +
" (?: # Zero or more [-.] separated parts. \n" +
" [-.] # Each part separated by one [-.], \n" +
" [A-Za-z0-9_]+ # followed by one or more non-[-.]. \n" +
" )* # Zero or more [-.] separated parts. \n" +
" [.]? # May end with one [-.]. \n" +
" | [.] # Or Case 2: Begins with hyphen or dot. \n" +
" (?: # Zero or more [-.] separated parts. \n" +
" [A-Za-z0-9_]+ # One or more non-[-.], \n" +
" [-.] # followed by one [-.]. \n" +
" )* # Zero or more [-.] separated parts. \n" +
" [A-Za-z0-9_]* # May end with zero or more non-[-.]. \n" +
" ) # End group of two content alternatives. \n" +
" $ # Anchor to end of string. ",
Pattern.COMMENTS);https://stackoverflow.com/questions/16918483
复制相似问题