js 匹配含变量的正则表达式
2012-04-10 18:45
281 查看
今天工作的时候遇到要解析表情,先把最后解决的结果贴上来
我遇到的问题:
^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^。
$ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字符本身,请使用 \$。
. 匹配除换行符 \n 之外的任何单字符。要匹配 .,请使用 \。
\ 将下一个字符标记为或特殊字符、或原义字符、或后向引用、或八进制转义符。例如, 'n' 匹配字符 'n'。'\n' 匹配换行符。序列 '\\' 匹配 "\",而 '\(' 则匹配 "("。
| 指明两项之间的一个选择。要匹配 |,请使用 \|。
{ 标记限定符表达式的开始。要匹配 {,请使用 \{。
[ 标记一个中括号表达式的开始。要匹配 [,请使用 \[。
( 和 ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。
* 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。
+ 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。
? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。
PS:我的淘宝店铺新开业,经营各种桌游,棋牌,希望大伙儿能来看看!http://201314yes.taobao.com/
/* *解析内容,将内容中的表情进行替换 *@param: Contens 要处理的字符串 *@param: arrFaceList 表情数据 *@param: webRoot 处理完显示的图片目录级别 */ function replaceFace(Contens, arrFaceList, webRoot) { $.each(arrFaceList.JDataList, function (i, faces) { var faceName = eval("/\\[" + faces.ExpressionName + "]/ig"); var replaceHtml = "<img title='" + faces.ExpressionName + "' style='cursor:pointer' src='" + webRoot + faces.ExpressionUrl + "'>" Contens = Contens.replace(faceName, replaceHtml); }); return Contens; }
我遇到的问题:
1、js里的replace方法跟c#里的不一样,Js里的只替换第一个匹配项,而C#里匹配所有的匹配项。
解决办法:用正则表达式匹配。正则中有个配置参数g是global全局匹配。ig是ignore case忽略大小写的全局匹配
2、接下来的问题是中括号是正则里的特殊符号,怎么办?
解决办法:将前中括号[加转义字符\,注意,后中括号]不用加。见下面资料
3、可是正则表达式中有变量该怎么办呢?
解决办法:用eval()方法来连接字符串。
4、为什么还是不行?
解决办法:转义字符要写两次,因为在字符串"/\\["里的单斜杠本身也需要转义。
资料:正则表达式中的特殊字符(需要转义)
^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^。$ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字符本身,请使用 \$。
. 匹配除换行符 \n 之外的任何单字符。要匹配 .,请使用 \。
\ 将下一个字符标记为或特殊字符、或原义字符、或后向引用、或八进制转义符。例如, 'n' 匹配字符 'n'。'\n' 匹配换行符。序列 '\\' 匹配 "\",而 '\(' 则匹配 "("。
| 指明两项之间的一个选择。要匹配 |,请使用 \|。
{ 标记限定符表达式的开始。要匹配 {,请使用 \{。
[ 标记一个中括号表达式的开始。要匹配 [,请使用 \[。
( 和 ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。
* 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。
+ 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。
? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。
PS:我的淘宝店铺新开业,经营各种桌游,棋牌,希望大伙儿能来看看!http://201314yes.taobao.com/
相关文章推荐
- js正则表达式匹配数字字母下划线等
- 常用的 js 匹配正则表达式和实例
- js截取相应的域名----正则匹配法 和校验Url 正则表达式
- JS正则表达式匹配<div><style>标签
- js使用正则表达式匹配字符串
- JS 正则表达式的位置匹配
- js 和 php 正则表达式匹配中文是不同的
- 实例分析js和C#中使用正则表达式匹配a标签
- 正则表达式--模式匹配--特殊变量(2)
- JS中正则表达式的模式匹配
- JS字符串替换函数全部替换方法 JS 正则表达式如何使用变量
- js正则表达式 匹配两个特定字符间的内容
- js 正则表达式 匹配除汉字,字母,数字,逗号,句号外的特殊字符(用来规范输入内容)
- JS匹配任意字符的正则表达式写法
- js(replace)正则表达式中如何使用变量?
- JS正则表达式匹配检测各种数值类型(数字验证)
- 实例分析js和C#中使用正则表达式匹配a标签