JS 字符串的操作

Posted anthonyliu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS 字符串的操作相关的知识,希望对你有一定的参考价值。

JS字符串操作还是很频繁,如果同正则表达式结合起来,功能非常强大。

1.test

   验证字符串是否符合正则表达式。

/\s+/.test(" i‘m you");  //true

它只会返回true和false;

2.Match

   字符串内检索指定的值,或找到一个或多个正则表达式的匹配。

   匹配到值返回一个数组,否则返回为null。

   2.1 match的使用与正则表达式的g标志有很大的关系,如果正则中没有g,那么第 0 个元素存放的是匹配文本,

   还含有两个对象属性。index 属性是匹配文本的起始字符中的位置,input 属性字符串的引用。

var str="1 plus 2 equal 3"
console.log(str.match(/\d+/)); 
//["1", index: 0, input: "1 plus 2 equal 3"]

  注意:如果你需要获得到index属性,应该是:

  str.match(/\d+/).index。

  如果正则表达式中有分组:

var str="1 plus 2 equal 3"
console.log(str.match(/(\d)\s+(eq)+/));
//["2 eq", "2", "eq", index: 7, input: "1 plus 2 equal 3"]

  数组中除了匹配到了正则表达式的部分,还有子表达式的部分。

  2.2 如果正则表达式中有g标志,match() 方法将执行全局检索,找到所有匹配子字符串。

var str="1 plus 2 equal 3"
console.log(str.match(/\d+/g));
//["1", "2", "3"]

 Match无法获取到多个子表达式的值,想获取可以用exec。

 3.exec

   在调用非全局的 RegExp 对象的 exec() 方法时,返回的数组与调用方法 match() 返回的数组是相同的。

   区别在于正则表达式是全局时,会有一个lastIndex属性,这个属性匹配文本的最后一个字符的下一个位置。

var str="1 plus 2 equal 3 2 ep3";
var regex= /(\d)\s+(e[qp])+/g;
console.log(str.match(regex));  
//["2 eq", "2 ep"]
console.log(regex.lastIndex);
//0
console.log(regex.exec(str));
//["2 eq", "2", "eq", index: 7, input: "1 plus 2 equal 3 2 ep3"]
console.log(regex.lastIndex);
//11

 

 为了获取到所有的分组,可以这么做:

var str="1 plus 2 equal 3 3 ep3";
var regex= /(\d)\s+(e[qp])+/g,result;
while((result = regex.exec(str))!== null) {
   console.log(result);
   console.log(regex.lastIndex);
}
// ["2 eq", "2", "eq", index: 7, input: "1 plus 2 equal 3 3 ep3"]
// 11
// ["3 ep", "3", "ep", index: 17, input: "1 plus 2 equal 3 3 ep3"]
// 21

 4.replace

     用于在字符串中用一些字符替换另一些字符,

     replacement 中的 $ 字符具有特定的含义。如下表所示,它说明从模式匹配得到的字符串将用于替换

$1、$2、...、$99 与 regexp 中的第 1 到第 99 个子表达式相匹配的文本。
$& 与 regexp 相匹配的子串。
$` 位于匹配子串左侧的文本。
$‘ 位于匹配子串右侧的文本。
$$ 直接量符号。

   例如:把url中的u=32替换成u=32-8;

var u = 8;
window.location.href.replace(/[?&]u=([^&]+)/,function($0,$1){
     return $0.replace($1, $1+ ‘-‘ +u);
})

 

以上是关于JS 字符串的操作的主要内容,如果未能解决你的问题,请参考以下文章

js判断字符串是不是为字母

js正则表达式

JS基本概念 -- 语法

js正则

python json 数据操作

JS正则表达式从入门到入土—— test方法以及它的那些坑