正则问题????

aiiiq 2006-11-02 09:24:19
<script>

var str = "a=1;b=ok;c=你好";
var key = "b";

var reg = new RegExp(key + "=(.+?)[$|;]");
var x = reg.exec(str);

alert(x[1])

</script>


key="a"时返回"1"正常
key="b"时返回"ok"正常
key="c"时返回"你好"出错
...全文
184 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
myvicy 2006-11-02
  • 打赏
  • 举报
回复
我也想帮你。
<script>

var str = "a=1;b=ok;c=你好";
var key = "b";
var str=";"+str+";"
v=eval("str.replace(/(.*);"+key+"=(.+?);(.*)/g,'$2')")
alert(v)
</script>
aiiiq 2006-11-02
  • 打赏
  • 举报
回复
var reg = new RegExp(key + "=(.+?)(;|$)");

这样就可以了,谢谢
lantersen 2006-11-02
  • 打赏
  • 举报
回复
1:可以在正则表达式模式圆括号内部的前面使用 '?:'来防止存储该匹配供今后使用。对上面所示正则表达式的下述修改提供了免除子匹配存储的相同功能。对 JScript:

/^(?:Chapter|Section) [1-9][0-9]{0,1}$/

2:
(a)除了 '?:' 元字符,还有两个非捕获元字符用于称之为预查的匹配。
(b)一个为正向预查,用 ?= 表示, 在任何开始匹配圆括号内的正则表达式模式的位置来匹配搜索字符串。
(c)一个为负向预查,用 '?!' 表示,在任何开始不匹配该正则表达式模式的位置来匹配搜索字符串。

例如,假定有一个包含引用有 Windows 3.1、Windows 95、Windows 98 以及 Windows NT 的文档。进一步假设需要更新该文档,方法是查找所有对 Windows 95、Windows 98 以及 Windows NT 的引用,并将这些引用更改为 Windows 2000。可以使用下面的 JScript 正则表达式,这是一个正向预查,来匹配 Windows 95、Windows 98 以及 Windows NT:

/Windows(?=95 |98 |NT )/
在 VBScript 要进行同样的匹配可以使用下述表达式:

"Windows(?=95 |98 |NT )"
找到一个匹配后,紧接匹配到的文字(而不包括预查中使用的字符)就开始对下一次匹配的搜索。例如,如果上面所示的表达式匹配到 'Windows 98',则将从 'Windows' 而不是 '98' 之后继续查找。
hbhbhbhbhb1021 2006-11-02
  • 打赏
  • 举报
回复
正向预查
aiiiq 2006-11-02
  • 打赏
  • 举报
回复
(?=(;|$))
这是什么意思啊?迷惑?
hbhbhbhbhb1021 2006-11-02
  • 打赏
  • 举报
回复
<script>

var str = "a=1;b=ok;c=你好";
var key = "c";

var reg = new RegExp(key + "=((.+?)(?=(;|$)))");
var x = reg.exec(str);

alert(x[1])

</script>

87,921

社区成员

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

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