困扰许久的一个JS 正则表达式,如何解析?

pzf_2008 2013-01-30 05:02:59
该正则如下:
/'^("(\\\\.|[^"\\\\\\n\\r])*?"|[,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t])+?$'/
...全文
170 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
likeajin 2013-01-31
  • 打赏
  • 举报
回复

[code=javascript]
var temp = new RegExp('^("(\\\\.|[^"\\\\\\n\\r])*?"|[,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t])+?$');
alert(temp.source);// ^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$

var reg = /^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/
//  ("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?    ----整个出现一次或多次,懒惰
//  "(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]
//  "(\\.|[^"\\\n\r])*?"    ----懒惰匹配一个""对,出现0次或多次,里面内容是\.或者不包含"\两个字符即回车换行符
//  [,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]    ---- 匹配最外层中括弧里的字符及转义字符随便出现一个。其中+Eaeflnr-u这一段不认识
[/code]
Kilin_Zhang 2013-01-31
  • 打赏
  • 举报
回复
.....只是转义符多了点而已啊,翻译出来是:^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$ 都是最基本的匹配,看点正则的匹配规则就懂了。
pzf_2008 2013-01-31
  • 打赏
  • 举报
回复
继续等待高手解答 ......
爱T 2013-01-30
  • 打赏
  • 举报
回复
静下心来,只要你清楚正则表达式的字符定义,慢慢理顺 /'^("(\\\\.|[^"\\\\\\n\\r])*?"|[,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t])+?$'/ 1. ^ :是与字符串开始的地方匹配,不匹配任何字符 $ :是与字符串结束的地方匹配,不匹配任何字符 2. \. :是匹配小数点(.)本身 3. | :左右两边表达式之间 "或" 关系,匹配左边或者右边 ( ) :(1). 在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰     (2). 取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到 4.[ ] 用来自定义能够匹配 '多种字符' 的表达式。要匹配中括号 5.\r, \n 代表回车和换行符 6. ? 匹配表达式0次或者1次,相当于 {0,1} 7.*表达式不出现或出现任意次,相当于 {0,} 首先谢谢你 让我又温习了正则表达式的基本通用规则;这里我就不帮你理了,还的靠自己啊!呵呵,加油哦!!!
pzf_2008 2013-01-30
  • 打赏
  • 举报
回复
应该是这个: var temp = new RegExp('^("(\\\\.|[^"\\\\\\n\\r])*?"|[,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t])+?$')}
dencey 2013-01-30
  • 打赏
  • 举报
回复
搞这么复杂干嘛,^前面和$后面怎么还有内容

87,923

社区成员

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

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