`

前端知识点分享2--正则,选择器

 
阅读更多
//去除左右空格
//最简洁版本

function trim(str){
//写的严谨点,这里要判断str是不是字符串
return str.replace(/^\s* | \s*$/g,'');

}

//自己想的另外一种写法
function trim(str){
//写的严谨点,这里要判断str是不是字符串,
//并且判断正则reg.exec(str)是否能匹配到
var reg=/^\s*(.*\S)\s*$/;
return str.replace(reg,reg.exec(str)[1]);
}
补充另外一个刚刚想到的

function trim(str){ return str.replace(/^\s*(.*\S)\s*$/,'$1'); }



 


 

 

<ul id="testdom">
               <li>1</li>
               <li>2</li>
               <li>3</li>
</ul>
//替换li中文本为3的内容

//这个怎么理解?
1:替换最后一个节点的文本内容
document.getElementById("testdom").lastChild.innerText="要替换的文本";
或者(节点数已知)
document.getElementById("testdom").children[2].innerText="要替换的文本";

2:只要文本为3,那么就替换这个节点的内容
var ul=document.getElementById("testdom");
var lis=ul.getElementsByTagName("li");
for循环判断内容进行替换

 

//统计字符串出现的字数

 

顺便说一下正则表达式的基本知识,等以后有空补充完整版本
以下内容引用地址http://www.iteye.com/topic/481228/
.     IE下[^\n],其它[^\n\r]  匹配除换行符之外的任何一个字符 
\d    [0-9]                   匹配数字 
\D    [^0-9]                  匹配非数字字符 
\s    [ \n\r\t\f\x0B]         匹配一个空白字符 
\S    [^ \n\r\t\f\x0B]        匹配一个非空白字符 
\w    [a-zA-Z0-9_]            匹配字母数字和下划线 
\W    [^a-zA-Z0-9_]           匹配除字母数字下划线之外的字符 



量词(下表量词单个出现时皆是贪婪量词) 

代码  描述 
*     匹配前面的子表达式零次或多次。
+     匹配前面的子表达式一次或多次。
?     匹配前面的子表达式零次或一次。 等价于 {0,1}。 
{n}   n 是一个非负整数。匹配确定的 n 次。
{n,}  n 是一个非负整数。至少匹配n 次。
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。


贪婪量词与惰性量词 

惰性量词仅仅在贪婪量词后面加个"?"而已,如"a+"是贪婪匹配的,"a+?"则是惰性的 

var str = "abc";  
var re = /\w+/;//将匹配abc  
re = /\w+?/;//将匹配a  

多行模式 

var re = /[a-z]$/;  
    var str = "ab\ncdef";  
    alert(str.replace(re,"#"));//ab\ncde#  
    re =/[a-z]$/m;  
    alert(str.replace(re,"#"));//a#\ncde#  


分组与非捕获性分组 
//捕获性分组
re = /abc{2}/;//将匹配abcc  
re = /(abc){2}/;//将匹配abcabc  

  
str = "abcabc ###";  
arr = re.exec(str);  
alert(arr[1]);//abc  
//非捕获性分组 (?:)  
re = /(?:abc){2}/;  
arr = re.exec(str);  
alert(arr[1]);//undefined  


候选(也就是所说的“或”) 

re = /^a|bc$/;//将匹配开始位置的a或结束位置的bc  
str ="add";  
alert(re.test(str));//true  
re = /^(a|bc)$/;//将匹配a或bc  
str ="bc";  
alert(re.test(str));//true  


当包含分组的正则表达式进行过test,match,search这些方法之后,每个分组都被放在一个特殊的地方以备将来使用,这些存储是分组中的特殊值,我们称之为反向引用 

var re = /(A?(B?(C?)))/;  
/*上面的正则表达式将依次产生三个分组 
(A?(B?(C?))) 最外面的 
(B?(C?)) 
(C?)*/  
str = "ABC";  
re.test(str);//反向引用被存储在RegExp对象的静态属性$1—$9中  
alert(RegExp.$1+"\n"+RegExp.$2+"\n"+RegExp.$3);  
//反向引用也可以在正则表达式中使用\1 ,\2...这类的形式使用  
re = /\d+(\D)\d+\1\d+/;  
str = "2008-1-1";  
alert(re.test(str));//true  
str = "2008-4_3";  
alert(re.test(str));//false  

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics