String 对象和正则表达式

一·String 对象方法

概念:多个字符组成的只读字符数组.........String本质上就是数组

和数组的不同

1.数组可以随意修改原数组,但字符串只读字符数组,一旦创建内容不可改变

2.类型不同:数组是Array,字符串是String都不可用

相同

1.都能用[i]访问某个元素或字符

2.都有length属性来记录元素或字符的个数

3.都能有for循环遍历元素或字符

4.都支持slice选取子数组或字符串

常用的API

toLowerCase(): 把字符串转为小写,返回新的字符串

var str="Hello World";
var str1=str.toLowerCase();
console.log(str);  //Hello World
console.log(str1); //hello world

toUpperCase(): 把字符串转为大写,返回新的字符串

var str="hello world";
var str1=str.toUpperCase();
console.log(str); //hello world
console.log(str1); //HELLO WORLD

charAt(): 获取指定下标位置的字符

var str="hello world";
var str1=str.charAt(6);
console.log(str1); //w

charCodeAt(): 返回指定下标位置的字符的unicode编码

var str="hello world";
var str1=str.charCodeAt(1);
var str2=str.charCodeAt(-2); //NaN
console.log(str1); //101

split(): 把字符串分割成字符串数组。

var str="AA BB CC DD";
var str1=str.split("");//如果把空字符串 ("")用作分割符,那么字符串的每个字符之间都会被分割
console.log(str1);// ["A", "A", " ", "B", "B", " ", "C", "C", " ", "D", "D"]

var str2=str.split(" "); //以空格为分隔符
console.log(str2);  //["AA" "BB" "CC" "DD"]

var string1="1:2:3:4:5";
var str4=string1.split(":");
console.log(str4);  // ["1", "2", "3", "4", "5"]

slice() 方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。

提取从位置 6 开始的所有字符:
<script type="text/javascript">

var str="Hello happy world!"
document.write(str.slice(6))

</script>
输出:happy world!

提取从位置 6 到位置 11 的所有字符:
<script type="text/javascript">

var str="Hello happy world!"
document.write(str.slice(6,11))

</script>
输出:happy

substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。

使用 substr() 从字符串中提取一些字符:
1.<script type="text/javascript">

var str="Hello world!"
document.write(str.substr(3))

</script>
输出:lo world!

2.<script type="text/javascript">

var str="Hello world!"
document.write(str.substr(3,7))

</script>
输出:lo worl

concat() 方法用于连接两个或多个字符串。

<script type="text/javascript">

var str1="Hello "
var str2="world!"
document.write(str1.concat(str2))

</script>以上代码的输出是:

Hello world!

replace(): 在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

var str="hello WORLD";
var reg=/o/ig; //o为要替换的关键字,不能加引号,否则替换不生效,i忽略大小写,g表示全局查找。
var str1=str.replace(reg,"**")
console.log(str1);  //hell** W*RLD

 

查找关键词的四种方法

1.查找一个固定的关键词出现的位置

var i =string.indexog("关键词”)默认从0开始,默认仅能查找一次出现的位置

var str="Hello World";
var str1=str.indexOf("o");
var str2=str.indexOf("world");
var str3=str.indexOf("o",str1+1);
console.log(str1);  //2 默认只找第一个关键字位置,从下标0开始查找
console.log(str2);  //-1
console.log(str3);  //7

2.判断字符串中是否包含符合正则的敏感词

var i = str.search(/正则/i)  i表示忽略大小写    在str中找到第一个符合正则表达式要求的关键字的位置
 返回值:找到了返回关键词的下标,如果没有找到返回-1

<script type="text/javascript">

var str="Visit W3School!"
document.write(str.search(/w3school/i))

</script>
输出:6

3.使用正则表达式查询指定的一类关键词
var arr = str.match(/正则/ig)  查找str中所有符合正则表达式要求的关键词,保存在一个数组中返回
默认只找第一个,找到所有需要必须加上g
返回值:所有敏感词组成数组,没有找到返回null

var arr = str.match(/we/gi);
 console.log(String(arr));
 //强调:如果一个api有可能返回null,就必须先做判断,不等null时在使用

4.既知道找位置又找具体内容
 //var arr = reg.exec(带查找的完整字符串)

返回值:本次找到的一个关键词及位置
arr[0]:关键词的内容    如果正则中有分组    arr[n]:自动保存在第n个分组匹配的子内容
arr[index]:当前关键词位置  -- > arr.index 如果没有找到返回null
每次查找后,都将reg.lastIndex属性(下一次开始位置)修改为当前index+关键词长度,相当于跳过了当前关键词继续向后找

var  str = "那天,我去她家,我说:我草 你家真大。她说一起去郊游,我草草的收拾了一下,她说:我去去就来";
            var reg =/我[去草]{1,2}/g;
            var arr;
            //固定用法:找所有关键词
            //反复:找str中的关键词,只要不等于null
            while((arr=reg.exec(str))!=null){
                console.log(arr);
                console.log(
                    `在位置${arr["index"]}
                    发现
                    敏感词${arr[0]}`
                    );
            }

二.正则表达式

RegExp 对象的方法

RegExp:

封装一条正则表达式,提供了使用正则表达式进行查找和验证的API

创建 直接量的创建 已知规则

var reg=/no/g;// 所有与的/在正则中都要加上\/才能转义为/

console.log(typeof reg);//object 对象

动态创建正则

var reg1=new RegExp(/正则/,"gi");

对象有 3 个方法:test()、exec() 以及 compile()。

正则表达式是严格区分大小写的

i  加上去以后,让正则表达式对大小写不敏感,不常用

g  全局匹配  找到了以后还会继续的去找,没有找到就一直找

m  执行多行匹配

练习:随机生成验证码,验证是否输入正确

<body>
        <script>
        function getchars(){
            var char=[];
            for(var u=48;u<=57;u++){
                //将0-9转为正文存入数组
                char.push(String.fromCharCode(u));
            }
            for(var u=65;u<=90;u++){
                //将A-Z转为正文存入数组
                char.push(String.fromCharCode(u));
            }
            for(var u=97;u<=122;u++){
                //将a-z转为正文存入数组
                char.push(String.fromCharCode(u));
            }
            return char;
        }
        function getcode(){
            //声明一个空数组
            var code=[];
            var chars=getchars();
            //生成4位数验证码
            for(var i=0;i<4;i++){
                //在0-61随机生成一个数
                var r=Math.floor(Math.random()*62);
                //将chars中r位置的字符存入code
                code.unshift(chars[r]);
            }//循环结束
            //返回无缝连接的结果
            return code.join("")
        }
        fun4();
        function fun4(){
            var code=getcode();
            var input;
            while((input=prompt("请输入验证码"+code)).toLocaleLowerCase()!=code.toLocaleLowerCase()){
                //验证码错误,重新输入
                alert(‘验证码错误,请重新输入‘);
                //重新获取验证码
                code=getcode();
            }//循环结束
            alert("验证通过");
        }
        </script>
    </body>

 测试手机号码是否输入正确

var reg=/^(13|15|18|17)\d{9}$/;
var str=‘18175693062‘;
 if(reg.test(str)){
   console.log(‘输入正确‘)
     break;
  }else{
   console.log(‘输入错误,请重新输入‘)
  }    

输入六位数密码,判断是否输入正确

<body>
        <script>
        var reg=/^\d{6}$/;
        while(true){
            var input=prompt("请输入六位数字密码");
            if(reg.test(input)){
                console.log(‘输入正确‘)
                break;
            }else{
                alert(‘输入错误,请重新输入‘)
            }
        }
        </script>
    </body>

练习:计算题的小游戏
        //随机出十道加法题,接收玩家输入结果,然后判断对错,对一道题加10分,游戏结束,给出总分
        //如果输入exit,直接退出游戏

<body>

        <button onclick="fun()">计算题的小游戏</button>
        <script>
        function fun(){
            for(var i=0,sum1=0 ;i<10;i++){
                var num1= Math.floor(Math.random()*10);
                var num2= Math.floor(Math.random()*10);
                var sum=num1+num2;
                var input=prompt(‘请输入‘+num1+"+"+num2+‘的答案‘);
                if(input==sum){
                    sum1+=10
                    console.log(‘答案正确,得‘+sum1+‘分‘);
                }else if(input==‘exit‘){
                    break;
                }else{
                    console.log(‘很抱歉,答案错误‘);
                }
            }
        }
        </script>
    </body>
<script>
        // 当鼠标失焦的时候开始进行验证
        // 只能输入6-12位的字母数字,
        // 如果验证通过,输入框变成绿色,
        // 如果验证不通过,输入框变成红色
        // 正在输入过程中,输入框为蓝色

        var input = document.getElementsByTagName("input")[0];
        var reg = /^[a-zA-Z\d]{6,12}$/g;
        input.onfocus = function(){
            reg.lastIndex = 0;     //聚焦的时候要让lastIndex设置成0,才不会出问题
            this.style.border = ‘2px solid #00f‘
        }

        input.onblur = function(){
            console.log(reg.lastIndex)
            var val = this.value;
            // console.log(reg.test(val))
            if(reg.test(val)){
                this.style.border = ‘2px solid #0f0‘
            }else {
                this.style.border = ‘2px solid #f00‘
            }
        }
    </script>

原文地址:https://www.cnblogs.com/luchengx/p/11294663.html

时间: 2024-10-12 06:02:56

String 对象和正则表达式的相关文章

String对象及正则表达式

1,String和string还是有区别的,一个就是用双引号或单引号包括起来的数据就是字符串,另一个本质是数组多个字符串组成的只读字符数组: 2,你说string他是数组吧,他和数组还是有点区别的,他们的相同点是都可以通过角标来访问里面的元素 都支持的API  slice 不同就是数组可以修改原数组,但是字符串不可以          数组可以修改原数组的API字符串不可以,因为字符串的只读原则,一旦创建内容就不可改变 3.String的对象的API anchor()创建HTML锚点 big()

JavaScript中String对象的match()、replace() 配合正则表达式使用

正则表达式由来已久,查找替换功能非常强大,但模板难记复杂. JavaScript中String对象的match().replace()这2个方法都要使用正则表达式的模板.当模板内容与字符串不相匹配时,match()返回null,replace()返回原字符串. 正则表达式的模板对象 //标准写法 regexp = new RegExp(pattern[, flag]); pattern: 模板的用法是关键,也是本章的主要内容. flag: "i"(ignore)."g&quo

JavaScript正则表达式-相关的String对象方法

JavaScript正则表达式相关的String对象方法有三个: 1.match(). 2.replace(). 3.search(). match() match(regExp); 使用指定的正则表达式来搜索字符串. 如果找到匹配字符串返回一个数组,否则返回null. 返回的数组包含两个属性:index和input. index是匹配字符串在原字符串中的位置. input属性是对原字符串的引用. var reg_pattern = /a\d/; var str = "apple,a2,b3,a

JavaScript 正则表达式,支持正则表达式的String对象方法

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <script type="text/javascript"> //1.语法 // var reg=new Range("a","i");//这样写更灵活

《Javascript权威指南》学习笔记之十一:处理字符串---String类和正则表达式

一.正则表达式的基本语法 1.概念:正则表达式由普通字符和特殊字符(元字符)组成的文本模式,该模式描述在查找字符串主体时待匹配的一个或者多个字符串.正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配. 普通字符包括所有的大小写字母字符.所有数字.所有标点符号及一些特殊符号.普通字符本身可以组成一个正则表达式,也可以和元字符组合组成一个正则表达式:而元字符则具有特殊的含义,包括().[].{}./.^.$.*.+.?...|.-.?:.?=.?! 2.基本语法 3.优先权含义 二.使用

String对象的属性和方法

创建字符串的两种方法: 1.直接量:var str = ""; 2.字符串对象创建: new String(""); String对象的属性 1.constrcutor 2.prototype 3.length:   str.length可以获取字符串长度 String对象的方法 1.匹配相关:与正则表达式配合使用 (1)str.match(RegExp):匹配指定字符串 (2)str.replace(RegExp):替换指定字符 (3)str.search(Reg

数组对象元素的添加,String对象,BOM对象以及文档对象的获取

数组对象的删除有三种方法: pop();        //移除最后一个元素并返回该元素值shift();      //移除最前一个元素并返回该元素值,数组中元素自动前移splice(0,2); //删除从指定位置deletePos开始的指定数量deleteCount的元素,数组形式返回所移除的元素通过这三种方法我们可以将数组中的元素按进行删除 var del = ["aa",23,345,56,34,"bb"]; var del_last = del.pop()

string对象

string对象用于处理文本(字符串).在js中可以用单引号或者双引号括起来的一个字符串当做一个字符串对象的实例.所以可以在某个字符串后面加上 . 去调用string对象的属性和方法. 创建string对象的语法: new String(str); String(str); 参数: str 是要存储在String对象中或转换成原始字符串的值. 返回值: 当string()和运算符 new 一起作为构造函数使用时,它返回一个新创建的String 对象,存放的是字符串str或str的字符串表示. 当

String对象中常用的方法

String对象中常用的方法 1.charCodeAt方法返回一个整数,代表指定位置字符的Unicode编码.strObj.charCodeAt(index)说明:index将被处理字符的从零开始计数的编号.有效值为0到字符串长度减1的数字.如果指定位置没有字符,将返回NaN.例如:      var  str = "ABC";      str.charCodeAt(0);结果:652.fromCharCode方法从一些Unicode字符串中返回一个字符串.String.fromCh