这个用JAVASCRIPT的REGEXP怎么表示
怎么用REGEXP来表示"中国经济"的字符串,但是要从中排除中国-经济和中国or经济的情况?可能我说的不明白,对于输入的多个检索词,用户可能输入的是AB代表两个个检索词与...
怎么用REGEXP来表示 "中国 经济"的字符串,但是要从中排除 中国 -经济 和 中国 or 经济 的情况?
可能我说的不明白,对于输入的多个检索词,用户可能输入的是A B代表两个个检索词与,A -B代表A而非B,A OR B代表 A或者B,用户输入的检索词可能并非2个,我需要通过常规表达式将A B替换成A*B,这就需要将A -B和A OR B的情况区别出来,所以求一个常规表达式。
补充:现在我通过/([^-|or|\s]+)\s([^-|or|\s]+)\s?/可以基本实现,但是无法区分or和ro,因为用[^-|or]来表示非-而且非or的情况是无法区分or,ro这两种情况 展开
可能我说的不明白,对于输入的多个检索词,用户可能输入的是A B代表两个个检索词与,A -B代表A而非B,A OR B代表 A或者B,用户输入的检索词可能并非2个,我需要通过常规表达式将A B替换成A*B,这就需要将A -B和A OR B的情况区别出来,所以求一个常规表达式。
补充:现在我通过/([^-|or|\s]+)\s([^-|or|\s]+)\s?/可以基本实现,但是无法区分or和ro,因为用[^-|or]来表示非-而且非or的情况是无法区分or,ro这两种情况 展开
展开全部
你这样的需求其实没有必要完全靠reg来做,因为你的字符串可能有很多个检索词
可以有这样一个思路:
1. 用空格分割每个字段,每个字段默认是与的关系
2. 如果某个字段前面有“-”,则将其字段独立出来
var str = "aaa bbb ccc -dddd....";
str = str.replace(/\s+/g," "); // 把中间连续的空格合并成一个
var arr = str.split(" "); // 把每个字段分离出来
var andArr = [], noArr = []; // 定义数组,存放需要与的字段,需要非的字段
for (var i=0;i<arr.length;i++)
{
if (/^-/.test(arr[i])) noArr.push(arr[i]);
else andArr.push(arr[i]);
}
// 到这里,需要与的字段都放到andArr,需要非的字段都放到了noArr里了
// 接下来你想怎么整就怎么整了
这个方法虽然不是你想象的那么简洁,但是流程要清晰的多,也方便扩展
可以有这样一个思路:
1. 用空格分割每个字段,每个字段默认是与的关系
2. 如果某个字段前面有“-”,则将其字段独立出来
var str = "aaa bbb ccc -dddd....";
str = str.replace(/\s+/g," "); // 把中间连续的空格合并成一个
var arr = str.split(" "); // 把每个字段分离出来
var andArr = [], noArr = []; // 定义数组,存放需要与的字段,需要非的字段
for (var i=0;i<arr.length;i++)
{
if (/^-/.test(arr[i])) noArr.push(arr[i]);
else andArr.push(arr[i]);
}
// 到这里,需要与的字段都放到andArr,需要非的字段都放到了noArr里了
// 接下来你想怎么整就怎么整了
这个方法虽然不是你想象的那么简洁,但是流程要清晰的多,也方便扩展
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不太明白你要表达的意思:
var s = "中国-经济";
var result = /中国\s经济/g.test(s);
alert(result); //output: false
var s = "中国-经济";
var result = /中国\s经济/g.test(s);
alert(result); //output: false
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询