求助一个js的正则表达式

hh161151 2012-02-20 07:56:25
现写一个正则的搜索功能,要求根据关键字搜索出相对应的id,下面是我写的

function searchReg(keyWord){
var str = "@xinlang|新浪|1@souhu|搜狐|2@wangyi|网易|3@baidu|百度|4@tengxun|腾讯|5@kaixinwang|开心网|6@renrenwang|人人网|7@1haodian|1号店|8@";
var reg = new RegExp("[^@]*" + keyWord + "[^@]*","gi");
var arr= [];
str = str.replace(reg, function(a){
arr.push(a);
});
console.log(arr);
}
searchReg("x")

这是个简单的搜索功能,其中的1、2、3、4.....表示的是对应的id,我是想用户输入中文或者拼音的情况下,找到匹配项,但是现在有个问题,就是如果关键字本事是id的话,上面的正则也给匹配出来了,比如关键字是1,第一条新浪的数据就会匹配上,我想要的是不进行id的匹配,只进行中文和中文拼音的匹配,那么这个正则该怎么写?
...全文
198 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
假装很屌 2012-02-21
  • 打赏
  • 举报
回复
你可以根据 xinlang 或者是 新浪这两个关键词获取他的ID,
把上面的正则改下就可以,
(?<A>\d*?)\@(?<B>xinlang)\|(?<C>.*?)\| 简化(?<A>\d*?)\@xinlang\|.*?\|

(?<A>\d*?)\@.*?\|(?<C>新浪)\| 简化(?<A>\d*?)\@.*?\|新浪\|
假装很屌 2012-02-21
  • 打赏
  • 举报
回复
(?<A>\d*?)\@(?<B>.*?)\|(?<C>.*?)\| Express做的测试, 得到7个结果。每个结果3个组,不需要的组自己去掉。

[0@xinlang|新浪|]
A:0
B:xinlang
C:新浪
[1@souhu|搜狐|]
A:1
B:souhu
C:搜狐
...
峭沙 2012-02-21
  • 打赏
  • 举报
回复
<!doctype html>
<html>
<head>
<title>tank fighting</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

</head>
<body>
<input id="inputbox" type="text" value="" />
<input id="btn" type="button" value="search" />
<script>
var str = "0@xinlang|新浪|1@souhu|搜狐|2@wangyi|网易|3@baidu|百度|4@tengxun|腾讯|5@kaixinwang|开心网|6@renrenwang|人人网|7@1haodian|1号店|8@";
document.getElementById('btn').onclick = function(){
var val = document.getElementById('inputbox').value,
reg = new RegExp("(\\w)*@(?:\\w+\\|)?"+val),
ret = reg.exec(str);
alert(ret[1]);
}
</script>
</body>
</html>
Acesidonu 2012-02-20
  • 打赏
  • 举报
回复
截取@以后的字符串再匹配
hh161151 2012-02-20
  • 打赏
  • 举报
回复
因为数据比较多,不能让用户选。
如果if判断的话,因为数据也是有可能的,比如例子中的1号店,输入1是要有提示的。
p2227 2012-02-20
  • 打赏
  • 举报
回复
那就if判断一下,输入为\d+时不执行
Acesidonu 2012-02-20
  • 打赏
  • 举报
回复
弄个下拉框让用户自己选吧
hh161151 2012-02-20
  • 打赏
  • 举报
回复
没有人会吗?再加个20分。

那如果不用我上面的正则的形式,用其它的可以实现吗?只需要模糊匹配,然后找到对应的中文、中文拼音和对应id,并把结果放到数组中就可以了。

87,910

社区成员

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

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