这里有新鲜出炉的 Javascript 教程,程序狗速度看过来!
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
今天要做一个应用 -- 判断编辑器中文字的个数。如果少如 20 个字就不能让其提交。没多想,正好周末的时候看了一下 js 中正则表达式的内容。很容易就想到了要用正则表达式来解决这个问题。虽说看了正则表达式的内容是看了,但是毕竟还是刚接接触,连基本的概念都很模糊,于是只好在网上找到如下的代码:
- function setContent(str) {
- str = str.replace(/<\/?[^>]*>/g,''); //去除html tag
- str.value = str.replace(/[ | ]*\n/g,'\n'); //去除行尾空白
- //str = str.replace(/\n[\s| | ]*\r/g,'\n'); //去除多余空行
- return str;
- }
测试的时候发现这段代码不能过滤掉网页中空格字符 (即:)。于是自己又改造了一下:
- function removeHTMLTag(str) {
- str = str.replace(/<\/?[^>]*>/g,''); //去除HTML tag
- str = str.replace(/[ | ]*\n/g,'\n'); //去除行尾空白
- //str = str.replace(/\n[\s| | ]*\r/g,'\n'); //去除多余空行
- str=str.replace(/ /ig,'');//去掉
- return str;
- }
恩,我的要求达到了。
现在来稍稍解释一下所用到的三个正则表达吧 (需要说明的是,因为自己也是刚刚接触,也许我的解释并不是正确的,仅供参考):
第一个:/<\/?[^>]*>/g
在 js 中正则表达式是以 "/" 开头的,后面的 / g,含义是表示全局模式,意思是在将匹配的模式应用于整个字符串,而不是在第一次匹配上之后就停止匹配了。
<\/?[^>]*> 这个分开来解释,其中第二个字符 "\" 是一个转移字符,用来转移后面的 "/" 字符的。? 匹配 0 或 1 个正好在它之前的那个字符。注意:这个元字符不是所有的软件都支持的。所以 <\/? 就是匹配 html 标签中的"</" 格式或者 "<" 格式的。
再来说 [^>]*>。[] 是含义是:
^ 的含义是:匹配一行的开始。例如正则表达式 ^When in 能够匹配字符串 "When in the course of human events" 的开始,但是不能匹配 "What and When in the"。意思就是匹配以 "When in" 开头的文字。
* 的含义是:匹配 0 或多个正好在它之前的那个字符。例如正则表达式。* 意味着能够匹配任意数量的任何字符
因此 [^>]* 意思是匹配> 之外的字符。所以 [^>] 可以匹配出的模式可以像下面这样的:
div 我需要的文字我需要的文字
* 和前面的 [^>] 结合在一起就可以匹配下面这些字符了:
div > 我需要的文字 p > 我需要的文字 br / 再加上后面的 > 就可以匹配下面的字符了:
div > 我需要的文字 p > 我需要的文字
br /> 这样就完成了一对 HTML 标签的匹配了。(多句话,总觉得这个匹配有点啰嗦,但是不知道到底在哪个地方啰嗦)第二个:/[|]*\n/g:我也没有看懂
第三个:/ /ig:就是直接查找 字符,后面的 / ig 的含义是在全局模式下进行不区分大小写的查找。g 代表全局,i 表示不区分大小写。
来源: http://www.phperz.com/article/17/0624/280137.html