字符串、正则

字符串的一些方法:


【IE7下不兼容方括号取下标,可以使用charAt()】

1.charAt(index) : 【根据下标取字符串】参数里面传递字符的下标

str.charAt(1);

 

2.charCodeAt(index) : 【根据下标取 字符的编码】


------------------------------------------------------------

4.search() :【返回字符的下标】 没有则返回-1。


3.indexOf(): 【返回字符的下标】查找到第一个满足字符的要求的内容的时候,就不往下面查找了;查找不到,返回-1

alert(str.indexOf('a'));

4.lastIndexOf() : 【从后往前查找】先查找到对应的字符,再数下标

alert(str.lastIndexOf('a'));


------------------------------------------------------------


5.substring(a,b) :【截取字符串】 开始位置,结束位置,包头不包尾;为一个参数的时候,从开始位置截取到最后。 返回的截取后的字符串,原字符串不变

str.substring(3,6);
str.substring(3);

6.substr(a,b) : 【截取字符串】 开始位置,截取个数;【当已知截取个数时使用】


7.slice(a,b) :【截取字符串】 开始位置,结束位置,包头不包尾;【当第二个参数是负时从后往前数】
var test = 'hello world';
test.slice(3,-4); //lo w


------------------------------------------------------------

8.split() :【分割字符串】可以将字符串根据某个字符分割为 数组

str1.split('-');

------------------------------------------------------------

10.toLowerCase方法返回一个字符串副本,该字符串中的字母被转换成小写。
str.toLowerCase();


11.toUpperCase方法返回一个字符串副本,该字符串中的所有字母都被转换为大写字母。
str.toUpperCase();

12.toCapitalCase

------------------------------------------------------------
13.trim IE8一下没有此方法,高级浏览器有。可以自己扩充:


String.prototype.trim = String.prototype.trim || function() {

return this.replace(/(^s*)|(s*$)/g,'');
}

 

 

------------------------------------------------------------

字符串的比较:

从第一个字符开始比较,第一个就大了,后面就不用比了;
所有的小写字母都是大于大写字母的(ASCII表);
如果字符串的数字和number类型的数字比较,会将字符串的数字转化为number的数字,再进行比较;

------------------------------------------------------------

经常配合正则使用的方法:

 

1. match() :把匹配的字符串放到一个数组中。默认情况下只捕获一个到数组中,正则表达式有全局的属性时(添加参数g),会捕获所有结果到数组中。

"abchelloasdasdhelloasd".match(/hello/g); // ["hello","hello"]


2. test():测试给定的字符串是否满足正则表达式,返回值是bool类型的,只有真和假,如果只是单纯的判断,不需要其他的处理,可以使用尤其是验证时。

/hello/.test("abchello"); // true

 

3. replace("oldStr","newStr") :【找到oldStr替换为newStr】

str.replace(条件,执行函数) 满足条件的每条数据都执行一次函数

str.replace(/{{w+}}/g, function(s){
console.log (s);
})

 

------------------------------------------------------------


^ 匹配行首
$ 匹配行尾

* 任意次【0+】
+ 匹配前面元字符1次或多次【1+】
? 匹配前面元字符0次或1次【】

{n} 精确匹配n次
{n,} 匹配n次以上
{n,m} 匹配n-m次

ab|cd 匹配ab或cd
[xyz] 匹配其中的任意一个字符
[^xyz] 匹配除了其中的任意一个字符
[] 匹配一个退格符
[0-9]
[a-z]
[A-Z]
[0-9a-zA-Z]

 匹配一个单词的边界
B 匹配一个非单词的边界

d 匹配一个数字,/d/ = /[0-9]/
D 匹配一个非数字,/D/ = /[^0-9]/

s 匹配一个空白字符,包括 , ,f, ,v等
S 匹配一个非空白字符

匹配一个换行符
匹配一个回车符
匹配一个制表符
v 匹配一个重直制表符

w 匹配字母,数字,下划线
W 匹配非(字母,数字,下划线)

\ 匹配""

. 任意字符
. 匹配'.'


正则验证中文:/[u4e00-u9fa5]/

i 执行大小写不敏感的匹配 【ignore】

g 执行一个全局的匹配,简而言之,就是找到所有的匹配,而不是在找到第一个之后就停止了

m 多行匹配

===========================================


// 匹配手机号首尾,以类似“123****8901”的形式输出
'12345678901'.replace(/(d{3})d{4}(d{4})/, '$1****$2');


注释:正则表达式中的括号即可用于分组,同时也用于定义子模式串,在replace()方法中,参数二中可以使用$n(n为数字)来依次引用模式串中用括号定义的字串。

 

原文地址:https://www.cnblogs.com/chiangyibo/p/7061805.html