function test()
{
var s = 'ss {|*se*|} {|*ganga*|} {|*se*|} {|*ganga*|} {|*hao*|} {|*hao*|} {|*ganga*|}';
var a = new Array();
a[0] = '{|*se*|}';
a[1] = '{|*hao*|}';
a[2] = '{|*ganga*|}'; for(i=0;i<a.length;i++)
{
//想根据a[i]的值得到相应的正则,进一步求出来字符串中有a[i]的数量
}}主要问题就是如何根据a[i]的值得到相应的正则,因为我发现正则好像不是字符串类型的,我无语了,,不知道怎么弄的,请大家帮忙看下
解决方案 »
- 关于这段语法的解释
- 关于层的问题? 有点急!
- 很奇怪的问题,这一句放在页面就有效,放在js文件就无效
- "您查看的网页正试图关闭窗口"如何去掉
- 动态改变 客户端的的图片
- 如何仅通过{client|server}{javascript|vbscript}实现‘执行服务器端可执行文件’功能,如某一批处理文件。(服务器可自由设置)
- 请问如何编下拉菜单?
- 类似这样的相册展示效果 jQuery 有什么插件吗?
- 这个效果 JQuery, prevf() 上一个 的方法对的, 下一个按钮会跳一下, 前面空白,怎么处理这个方法
- JavaScript常用对象的方法和属性小结
- 如何在这里加上特效,帮忙修改下面的效果
- 谷歌浏览器如何用JS添加到书签
本对象包含正则表达式模式以及表明如何应用模式的标志。语法 1
re = /pattern/[flags]语法 2
re = new RegExp("pattern",["flags"]) 参数
re必选项。将要赋值为正则表达式模式的变量名。Pattern 必选项。要使用的正则表达式模式。如果使用语法 1,用 "/" 字符分隔模式。如果用语法 2,用引号将模式引起来。flags可选项。如果使用语法 2 要用引号将 flag 引起来。标志可以组合使用,可用的有: g (全文查找出现的所有 pattern)
i (忽略大小写)
m (多行查找)
说明
不要将正则表达式对象跟全局 RegExp 对象混淆。尽管听起来像是一回事,但它们是截然不同的。正则表达式对象的属性只包含一个正则表达式的信息,而全局 RegExp 对象的属性包含了不断更新的每一个匹配出现的信息。正则表达式对象保存用于查找字符串中的字符组合时的模式。创建正则表达式对象后,或者它被传递给字符串方法,或者字符串被传递给一个正则表达式方法。有关最近进行查找的信息被保存在全局 RegExp 对象中。当预先知道查找字符串时用语法 1。当查找字符串经常变动或不知道时用语法 2,比如由用户输入得到的字符串。在使用前 pattern 参数被编译为内部格式。对语法 1 来说,pattern 在该脚本被装载时被编译。对语法 2 来说,pattern 在使用前,或调用 compile 方法时被编译。 示例
下面的示例创建一个包含正则表达式模式及相关标志的对象(re),向您演示正则表达式对象的用法。在本例中,作为结果的正则表达式对象又用于 match 方法中:function MatchDemo(){
var r, re; // 声明变量。
var s = "The rain in Spain falls mainly in the plain";
re = new RegExp("Spain","i"); // 创建正则表达式对象。
r = s.match(re); // 在字符串 s 中查找匹配。
return(r); // 返回匹配结果。
}PS:如果你要构建完善的正则表达式,需要注意替换字符串里面的特殊字符:特殊字符
有不少元字符在试图对其进行匹配时需要进行特殊的处理。要匹配这些特殊字符,必须首先将这些字符转义,也就是在前面使用一个反斜杠 (\)。下表给出了这些特殊字符及其含义:
特殊字符 说明
$ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字符本身,请使用 \$。
( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。
* 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。
+ 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。
. 匹配除换行符 \n之外的任何单字符。要匹配 .,请使用 \。
[ 标记一个中括号表达式的开始。要匹配 [,请使用 \[。
? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。
\ 将下一个字符标记为或特殊字符、或原义字符、或后向引用、或八进制转义符。例如, 'n' 匹配字符 'n'。'\n' 匹配换行符。序列 '\\' 匹配 "\",而 '\(' 则匹配 "("。
^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^。
{ 标记限定符表达式的开始。要匹配 {,请使用 \{。
| 指明两项之间的一个选择。要匹配 |,请使用 \|。
a = ['{|*se*|}', '{|*hao*|}', '{|*ganga*|}'];
for (i = 0; i < a.length; i++) {
alert(a[i] + ': ' + s.match(new RegExp(a[i].replace(/([{}|^$+?:\*\[\]\-\.])/g, '\\$1'), 'g')).length);
}
这个地址是正则最基本的用法
function toRegExp(str){
var reg = /([\{\}\[\]\(\)\<\>\.\+\\\/\*\?\|])/gi;// 将需要转义的字符全列出来,字符前要加\ ,最外面的()和[]不用加
str = str.replace(reg, "\\$1");
return str;
}function test(){
var s = 'ss {|*se*|} {|*ganga*|} {|*se*|} {|*ganga*|} {|*hao*|} {|*hao*|} {|*ganga*|}';
var a = new Array();
var reg = null;
a[0] = '{|*se*|}';
a[1] = '{|*hao*|}';
a[2] = '{|*ganga*|}'; for(i = 0; i < a.length; i++){
reg = new RegExp(toRegExp(a[i]),"g");
alert(a[i] + "=========" + s.match(reg).length);
}
}test();
</script>