JavaScript处理字符串

concat

  • 将两个或多个字符的文本组合起来,返回一个新的字符串。
    var c = a.concat(b)

indexOf

  • 返回字符串中一个子串第一处出现的索引(从左到右搜索)。如果没有匹配项,返回-1。
    var index = a.indexOf("w");

lastIndexOf

  • 返回字符串中一个子串最后一处出现的索引(从右到左搜索),如果没有匹配项,返回-1。
    var index = a.indexOf("w");

charAt

  • 返回指定位置的字符
    var get_char = a.charAt(0);

length

  • 将整个字符串转换成大写字母。
    var low = a.length();

toLowerCase

  • 返回字符串的长度,所谓字符串的长度是指其包含的字符的个数。
    var low = a.toLowerCase();

toUpperCase

  • 将整个字符串转换成大写字母。
    var low = a.toUpperCase();

join

  • 把数组中的所有元素放入一个字符串。
    var a = "hello";
    var arr = a.split("");

split

  • 通过将字符串划分成子串,将一个字符串做成一个字符串数组。
    var arr = ["哎呦喂","你","很","拽","啊"];
    var arr2 = arr.join("");

substr

  • 返回字符串的一个子串,传入参数是起始位置和长度。
    var sub2 = a.substr(1,2);

substring

  • 返回字符串的一个子串,传入参数是起始位置和结束位置。
    var sub2 = a.slice(1,4);

slice

  • 提取字符串的一部分,并返回一个新字符串(用法与substring相同)。
    var sub2 = a.slice(1,4);

match

  • 检查一个字符串匹配一个正则表达式内容,如果没有匹配项,返回null。
    var reg = new RegExp(/^\w+$/);
    var alpha = a.match(reg);

search

  • 执行一个正则表达式匹配查找。如果查找成功,返回字符串中匹配的索引值,否则返回-1。
    var re = new RegExp(/^\w+$/);
    var res = a.search(re);

replace

  • 用来查找匹配一个正则表达式的字符串,然后使用新字符串代替匹配的字符串。
    var res = a.replace(re,"hello");
    var res2 = b.replace(re,"hello");

正则表达

1.定义正则表达式:

a.普通方式: var reg=/表达式/附加参数
b.构造函数方式: var reg=new RegExp(“表达式”,”附加参数”);

附件参数:
g:代表可以进行全局匹配。
i:代表不区分大小写匹配。
m:代表可以进行多行匹配。

ps:普通方式中的表达式必须是一个常量字符串,而构造函数中的表达式可以是常量字符串,也可以是一个js变量,例如根据用户的输入来作为表达式参数等等:var reg=new RegExp(document.forms[0].exprfiled.value,”g”);

正则表达式小知识
1--- . 匹配除换行符以外的任意字符
2--- \w 匹配字母或数字或下划线或汉字 (等价于[0-9a-zA-Z_] \w能不能匹配汉字要看你的操作系统和你的应用环境而定)
3--- \s 匹配任意的空白符
4--- \d 匹配数字
5--- \b 匹配单词的开始或结束
6--- ^ 匹配字符串的开始
7--- $ 匹配字符串的结束
8--- +表示重复一次或者多次
9--- *表示重复0或者多次
10--- {n,m}表示n到m次

描述字符范围
在正则表达式语法中,放括号表示字符范围。在方括号中可以包含多个字符,表示匹配其中任意一个字符。如果多个字符的编码顺序是连续的,可以仅指定开头和结尾字符,省略中间字符,仅使用连字符~表示。如果在方括号内添加脱字符^前缀,还可以表示范围之外的字符。例如:
[abc]:查找方括号内任意一个字符。
[^abc]:查找不在方括号内的字符。
[0-9]:查找从 0 至 9 范围内的数字,即查找数字。
[a-z]:查找从小写 a 到小写 z 范围内的字符,即查找小写字母。
[A-Z]:查找从大写 A 到大写 Z 范围内的字符,即查找大写字母。
[A-z]:查找从大写 A 到小写 z 范围内的字符,即所有大小写的字母。

选择匹配

选择匹配类似于 JavaScript 的逻辑与运算,使用竖线|描述,表示在两个子模式的匹配结果中任选一个。例如:

1) 匹配任意数字或字母
var r = /\w+|\d+/;
2) 可以定义多重选择模式。设计方法:在多个子模式之间加入选择操作符。为了避免歧义,应该为选择操作的多个子模式加上小括号。
var r = /(abc)|(efg)|(123)|(456)/;

惰性匹配

重复类量词都具有贪婪性,在条件允许的前提下,会匹配尽可能多的字符。
?、{n} 和 {n,m} 重复类具有弱贪婪性,表现为贪婪的有限性。
*、+ 和 {n,} 重复类具有强贪婪性,表现为贪婪的无限性。
越是排在左侧的重复类量词匹配优先级越高。下面示例显示当多个重复类量词同时满足条件时,会在保证右侧重复类量词最低匹配次数基础上,使最左侧的重复类量词尽可能占有所有字符。
与贪婪匹配相反,惰性匹配将遵循另一种算法:在满足条件的前提下,尽可能少的匹配字符。定义惰性匹配的方法:在重复类量词后面添加问号?限制词。贪婪匹配体现了最大化匹配原则,惰性匹配则体现最小化匹配原则。
针对 6 种重复类惰性匹配的简单描述如下:

  • {n,m}?:尽量匹配 n 次,但是为了满足限定条件也可能最多重复 m 次。
  • {n}?:尽量匹配 n 次。
  • {n,}?:尽量匹配 n 次,但是为了满足限定条件也可能匹配任意次。
  • ??:尽量匹配,但是为了满足限定条件也可能最多匹配 1 次,相当于 {0,1}?。
  • +?:尽量匹配 1 次,但是为了满足限定条件也可能匹配任意次,相当于 {1,}?。
  • *? :尽量不匹配,但是为了满足限定条件也可能匹配任意次,相当于 {0,}?。
var s = "<html><head><title></title></head><body></body></html>";
var r = /<.*?>/
var a = s.match(r);  //返回单个元素数组["<html>"]

在上面示例中,对于正则表达式 /<.*?>/ 来说,它可以返回匹配字符串 "<>",但是为了能够确保匹配条件成立,在执行中还是匹配了带有 4 个字符的字符串“html”。惰性取值不能够以违反模式限定的条件而返回,除非没有找到符合条件的字符串,否则必须满足它。

子表达式

使用小括号可以对字符模式进行任意分组,在小括号内的字符串表示子表达式,也称为子模式。子表达式具有独立的匹配功能,保存独立的匹配结果;同时,小括号后的量词将会作用于整个子表达式。
通过分组可以在一个完整的字符模式中定义一个或多个子模式。当正则表达式成功地匹配目标字符串后,也可以从目标字符串中抽出与子模式相匹配的子内容。

var s = "ab=21, bc=45, cd=43";
var r = /(\w+)=(\d*)/g;
while (a = r.exec(s)) {
    console.log(a);  //返回类似["ab=21","bc=45","cd=43"]三个数组
}

此代码中,不仅能匹配出每个变量声明,同时还抽出每个变量及其值。

参考:http://c.biancheng.net/view/5632.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容