求一个正则表达式,匹配偶数双引号,急求

晓灬佩恩 2013-12-09 11:50:59
假设一段字符串以#号开始,以#号结束
#str = str1 + "test";# //能匹配成功
#str = "test" + str1 + "test";# //这能匹配成功
#str = "test + str1";# //能匹配成功
#str = "te"st" + str1;# //不能匹配成功

如上例,有没有大侠帮忙写个正则表达式,就是要匹配一段字符串,里面只能含有偶数个引号。引号的位置是不确定的,只要里面引号的个数是偶数个就行

求指点,求讨论。
...全文
437 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
l676331991 2013-12-09
  • 打赏
  • 举报
回复
1.首尾是#号, 2.含偶数个引号

var str = '#str = "test" + str1 + "test";#';
if(str.match(/^#.+#$/) && str.match(/\"/g).length%2 === 0) {
  
}
晓灬佩恩 2013-12-09
  • 打赏
  • 举报
回复
来人啊,帮顶也给分~
allali 2013-12-09
  • 打赏
  • 举报
回复
function check(str){ alert(/#.+=("[^"]+"|[^"+]+)((\+{1}"[^"]+")|(\+{1}[^"+]+))*;#/g.test(str.replace(" ",""))); }
晓灬佩恩 2013-12-09
  • 打赏
  • 举报
回复
引用 9 楼 l676331991 的回复:
亲,你一楼的问题确实让人产生误解了。 /#([^"]*"[^"]*"[^"]*)+#/ 有点啰嗦,(若干非引号+引号+若干非引号+引号+若干非引号)重复 或者:/#(([^"]*"[^"]*){2})+#/ 这里有些细节,比如#""#,#""""#,##,这些极端的要不要算,你看吧,就是*和+的区别。
谢谢~已经解决问题了,按你这么一说,其实也很简单,我看问题没那么透彻~学习啦
似梦飞花 2013-12-09
  • 打赏
  • 举报
回复
万一楼主是女的呢
zhjdg 2013-12-09
  • 打赏
  • 举报
回复
我是男的,别乱亲我。 这个问题,单靠正则搞不定。 要写个函数。
l676331991 2013-12-09
  • 打赏
  • 举报
回复
亲,你一楼的问题确实让人产生误解了。 /#([^"]*"[^"]*"[^"]*)+#/ 有点啰嗦,(若干非引号+引号+若干非引号+引号+若干非引号)重复 或者:/#(([^"]*"[^"]*){2})+#/ 这里有些细节,比如#""#,#""""#,##,这些极端的要不要算,你看吧,就是*和+的区别。
晓灬佩恩 2013-12-09
  • 打赏
  • 举报
回复
引用 4 楼 zzgzzg00 的回复:
indexOf和lastIndexOf检测'#'是不是在0的位置和str.length-1的位置 match(/\"/g)检测获得的数组元素是不是偶数个 试试 不用知道字符串的内容啊 貌似
同楼上,感谢回复~
晓灬佩恩 2013-12-09
  • 打赏
  • 举报
回复
引用 6 楼 l676331991 的回复:
就好比下面的对话: A:肥胖指数怎么算啊,我要一个公式哦 B:设身高h(m),体重w(kg)比如,h=1.8,w=90,指数=w/(h*h)=90/(1.8*1.8)=27.78 A:亲,不行哦,我事先不知道身高和体重,我要的是一个公式,然后来作计算的 B:无语+泪奔
可能是我没有说清楚,我是要从一段字符串里面去查找符合的上述条件的小段字符串,我要找到它的位置,然后去替换它。比方说从头到尾进行遍历,我不知道这段字符串在哪个位置,不知道有多长。所以我需要的是一个正则表达式,用正则表达式去匹配查找。 比如:匹配腾讯QQ号:[1-9][0-9]{4,}这样子。 亲,你这个是判断某个字符串符不符合 1.首尾是#号,2.含偶数个引号 这两个条件,并不是查找
l676331991 2013-12-09
  • 打赏
  • 举报
回复
就好比下面的对话: A:肥胖指数怎么算啊,我要一个公式哦 B:设身高h(m),体重w(kg)比如,h=1.8,w=90,指数=w/(h*h)=90/(1.8*1.8)=27.78 A:亲,不行哦,我事先不知道身高和体重,我要的是一个公式,然后来作计算的 B:无语+泪奔
l676331991 2013-12-09
  • 打赏
  • 举报
回复
引用 3 楼 w356628 的回复:
[quote=引用 2 楼 l676331991 的回复:] 1.首尾是#号, 2.含偶数个引号

var str = '#str = "test" + str1 + "test";#';
if(str.match(/^#.+#$/) && str.match(/\"/g).length%2 === 0) {
  
}
亲,这样不行噢。。。我要的是一个正则表达式,用来做字符串匹配,我事先是不知道字符串的内容。[/quote] LZ你到底在说什么?我这里的str也是不知道内容的啊,难道我事先知道了?什么?第一行的var str?泪奔啊~~~要我说什么好呢?
似梦飞花 2013-12-09
  • 打赏
  • 举报
回复
indexOf和lastIndexOf检测'#'是不是在0的位置和str.length-1的位置 match(/\"/g)检测获得的数组元素是不是偶数个 试试 不用知道字符串的内容啊 貌似
晓灬佩恩 2013-12-09
  • 打赏
  • 举报
回复
引用 2 楼 l676331991 的回复:
1.首尾是#号, 2.含偶数个引号

var str = '#str = "test" + str1 + "test";#';
if(str.match(/^#.+#$/) && str.match(/\"/g).length%2 === 0) {
  
}
亲,这样不行噢。。。我要的是一个正则表达式,用来做字符串匹配,我事先是不知道字符串的内容。

87,907

社区成员

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

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