一、indexof函数分析:
indexof方法:
语法:
stringObject.indexOf(searchvalue,fromindex)
searchvalue | 必需。规定需检索的字符串值。 |
fromindex | 可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的首字符开始检索。 |
该方法将从头到尾地检索字符串 stringObject,看它是否含有子串 searchvalue。开始检索的位置在字符串的 fromindex 处或字符串的开头(没有指定 fromindex 时)。如果找到一个 searchvalue,则返回 searchvalue 的第一次出现的位置。stringObject 中的字符位置是从 0 开始的。
注:
1.indexOf() 方法对大小写敏感!
2.如果要检索的字符串值没有出现,则该方法返回 -1。
利用indexof函数检索字符串,未找到指定字符串值返回-1作为循环判断的条件。
如下是在一段字符串中找到指定字符串出现次数的函数:
var mainStr="star,star,study,study,star,hello";
var subStr="star";
function countStar(mainStr, subStr)
{
var count = 0;
var find = 0;
do
{
find = mainStr.indexOf(subStr, find);
if(find != -1)
{
count++;
find += subStr.length; //此处为该函数的关键点,当找到了第一个指定字符串后,下一次开始检索的位置为上一次找的指定字符串首字母位置加上该字符串的长度,这样才能不重复检索前面的字符串。
}
}while(find != -1)
return count;
}
document.write(countStar(mainStr, subStr));
二、正则表达式分析:
何为正则表达式?
正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。
搜索模式可用于文本搜索和文本替换。
对于我来说,通俗地讲正则表达式就是字符串的检索将复杂长串的代码简化为一串略微抽象的简短的代码,再配上相应的正则表达式方法即可发挥其高效的作用。
例:
var str=/rgb/g;
这里的/rgb/即为正则表达式主体(用于检索),而后面的g为修饰符,而一般正则表达式由这两部分构成。
而有些时候使用正则表达式方法,不用定义变量,可以直接使用正则表达式进行方法操作。
注意(三种修饰符的作用):
i | 执行对大小写不敏感的匹配。 |
g | 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。 |
m | 执行多行匹配。 |
我们需要了解正则表达式模式包括其表达式范围、量词、特殊意义的字符。
如下举例常用的正则表达式表单验证对应字符串:
name:
/*校验是否中文名称组成 */
function ischina(str) { var reg=/^[\u4E00-\u9FA5]{2,4}$/; /*定义验证表达式*/ return reg.test(str); /*进行验证*/ }
phone:
/*校验电话码格式 */
function isTelCode(str) { var reg= /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/; return reg.test(str); }
/*校验邮件地址是否合法 */
function IsEmail(str) { var reg=/^\w+@[a-zA-Z0-9]{2,10}(?:\.[a-z]{2,4}){1,3}$/; return reg.test(str); }
所需要注意的是这也是js开始用于表单验证表现出来的好处,可直接在网页进行验证,不必与后台数据进行交互后验证,也提高了效率。