引言:查找下面字符串中的数字。顺便看看这个查找思路比较好。
var str = '3e -f55,ac78 907A 3 o03';
var arr =[];
var tmp='';
for(var i=0;i<str.length; i++)
{
if(str.charAt(i)<= '9'&&str.charAt(i)>='0')
{
tmp+=str.charAt(i);
}
else
{
if(tmp)
{
arr.push(tmp);
tmp='';
}
}
}
if(tmp)
{
arr.push(tmp);
tmp='';
}
运行结果:'3,55,78 ,907,3,03'
var str = '3e -f55,ac78 907A 3 o03';
var re = /\d+/g;
alert( arr.match(re) );运行结果:'3,55,78 ,907,3,03'总结:对比上面的示例,显而易见。
复习回顾: 数组字符串操作可以见传送门
1.以前学过的关于字符串操作:
(1)--->search
很简单就是查询字符的操作,不过很常见。
arr = '123 45jn ads c b67';
alert(arr.search('a')); //
运行结果:--->: 9
分析:只找第一次出现的位置,查找不存在的值返回-1;
(2)-->substring
arr = '123 45jn ads c b67';
alert(arr.substring(0,3));//这个是有起点和终点,从0开始到3结束 3位长度 -->123;
分析:不包括最后一个字符;
(3)-->charAt
arr = '123 45jn ads c b67';
alert(arr.charAt(2)); // 查找第二个字符串运行结果:--->: 3(4)-->splitarr = '010-824-437-8';
alert(arr.split('-'));//注意,split还有一个参数是分割几次--arr.split('-',2)
运行结果-->010,824
运行结果:--->: '010,824,437,8';【概述】:正则表达式就是用来规定字符串的规则;很简单,就是对字符串的操作。
(4)简易过滤敏感词;(1):正规写法:var arr = 'ab cd edA';
var re = new RegExp('a','i'); // 构造函数(2)一般写法:我们知道,一般写法总是比较简单。var re = /a/i; 和上面的意思一样,只不过是在写法上简单了许多。(3)var arr = 'aa 33 4 f4 67 c';
var re = /\d+/g;
alert(arr.match(re));
运行结果:--->: 33 4 4 67;分析:a) match-->语法:stringObject.match(regexp)-->说明:match() 方法将检索字符串 stringObject,以找到一个或多个与 regexp 匹配的文本。这个方法的行为在很大程度上有赖于 regexp 是否具有标志 g
b):\d-->是字符串中的数字,不指定默认一般是第一个数字。c):g-->是全局匹配的意思,也就是说在所有的字符串种查找含有数字的。d):+-->长度至少是1。
var arr = '杀人 抢劫 剽窃 看书 看电影 看日本电影';
var re = /杀人|抢劫|剽窃/g;
alert(arr.replace(re,'***'));
运行结果:--->: *** *** *** 看书 看电影 看日本电影';
分析: a): | -->是或者地意思。
b):replace()-->:用于替换
arr = 'abcjdahdaygad';
re = /a/g;
alert(arr.replace(re,'A'));运行结果:--->: AbcjdAhdaygAd
(1):转义:
a): \d -->数字[0-9]; \D--->[^0-9] 除了0-9,与小写刚好相反。
b) . -->除了换行符以外的任意字符 \.-->输出点本身; eg: .+ -->许多个任意的字符。
c) \w --> [a-z0-9_]字母数字下划线 、\W和上面一样。
d) \s -->空格 \S;除了空白字符意外的东西;\S和上面一样.
e) \b -->单词边界;
分析:a):e[abc]f-->表示或者,分开写:eaf、 ebf 、ecf。里面的所有东西都是或的范围eg:[0-9] [a-z];[0-9a-z];都表示的是其中的一个,不是整体,eg[123,456]代表1或者2或者3或者逗号或者……;
b):[^a]--除了a以外,^很常见,表示的就是除...以外。