java正则疑问求解惑

jisg_57 2010-04-21 05:41:24
1.^[a-z0-9_-]{3,15}$
在网上看到说^是行开始,$是行结尾。请问^和$在这里都有什么作用了?不写的话貌似也没问题啊。

2. (?=.*[a-z])
必须包含一个小写字符。---怎么会有这种写法了。怎么看出这个正则所要表达的意思了?

3.(?i)<a([^>]+)>(.+?)</a>
资料上说(?i)表示所有的检查区分大小写。但我也看过说(?i)是不区分大小写的,到底哪个正确了?

4.<.+?>
匹配html标签。+后面跟个?是什么意思了?

5. (.+?)
匹配所有.这里匹配所有是什么意思了?java正则里还有那些代表特种意思的东西了?

6. confirm\\((['\"])([^'\"]+)\\1\\)
([^'\"]+)是什么意思?为什么要分为两个组了?\\1反向引用。看不懂,什么事反向引用,有什么用了?类似\\1这样的还有些什么了?

本人刚学java正则,基础的懂了一点,可看别人的正则表达式就是看不懂,求高手帮忙指教,谢谢了。
...全文
122 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
平淡面对 2010-04-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 jisg_57 的回复:]
6. confirm\\((['\"])([^'\"]+)\\1\\)
([^'\"]+)是什么意思?为什么要分为两个组了?\\1反向引用。看不懂,什么事反向引用,有什么用了?类似\\1这样的还有些什么了?
[/Quote]

[^'\"]+代表除了 ' 和 " 字符的其他字符,有一个或者一个以上。

\1反向引用其实不难。它代表第一组匹配的字符。所谓第一组,指从左到右的顺序,匹配组 ( 所在的位置。在这里,\\( 是一个字符 ( 的匹配,不算组。所以这里的第一组指(['\"]),意思是匹配任何 ' 和 " 的一个字符。
至于为何要在这里用\1,很容易理解,比如,confirm('hello') 或 confirm("hello"),其中 hello 是被同样的字符 ' 或 " 所包围,如果要匹配一组同样的 ' ... ' 或 " ... ", 用 \1 匹配效率高。

同样的,\2, ..., \n (n 表示一个数字)都可以类推使用。
平淡面对 2010-04-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 jisg_57 的回复:]
4.<.+?>
匹配html标签。+后面跟个?是什么意思了?
[/Quote]

<.+?>表示最少匹配。
比如:<html><title>welcome
用<.+?>匹配结果:<html>
用<.+>匹配结果:<html><title>

[Quote=引用楼主 jisg_57 的回复:]
5. (.+?)
匹配所有.这里匹配所有是什么意思了?java正则里还有那些代表特种意思的东西了?
[/Quote]

.代表任何一个字符
其他,

. 任何一个字符
\d 一个数字 [0-9]
\D 任何一个非数字字符: [^0-9]
\s 任何一个空白字符: [ \t\n\x0B\f\r]
\S 任何一个非空白字符: [^\s]
\w 任何一个单词字符: [a-zA-Z_0-9]
\W 任何一个非单词字符: [^\w]


luozhangwen 2010-04-22
  • 打赏
  • 举报
回复
1.比如字符串String str= "abc"; 如果你只要是a开始b结尾 ^a.*B$
2.不知道为什么这样写?=是什么意思? [a-z] 这样写不更简单吗?
3.(?i) 是不区分大小写的.
4.
5.
平淡面对 2010-04-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 jisg_57 的回复:]
3.(?i)<a([^>]+)>(.+?)</a>
资料上说(?i)表示所有的检查区分大小写。但我也看过说(?i)是不区分大小写的,到底哪个正确了?
[/Quote]

(?i)代表不区分英文字母大小写
avven2009 2010-04-22
  • 打赏
  • 举报
回复
不错,学习了,谢谢楼主1
scuzpcliff 2010-04-22
  • 打赏
  • 举报
回复
1. 举例说,字符为'abcd' 正则表达式为 /bc/,验证通过,而正则改为/bc$/,验证不通过,因为$要求被验证的字符结尾必须是bc。所以 'abc' 可以通过。 ^的意思不重复了,一个要头,一个要求尾而已。

..看了下后面的,实现太繁琐了,你还是去网上找相关资料吧。



jisg_57 2010-04-22
  • 打赏
  • 举报
回复
我晕,没人帮顶了?自己顶起
平淡面对 2010-04-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 jisg_57 的回复:]
2. (?=.*[a-z])
必须包含一个小写字符。---怎么会有这种写法了。怎么看出这个正则所要表达的意思了?
[/Quote]

零宽断言

具体可参考下面(Java类似)

http://blog.csdn.net/magictong/archive/2010/02/27/5332423.aspx

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧