Java全栈学习:JavaScript---正则表达式

一.概述

正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

二.常见的正则表达式

. 匹配除了换行符以外的所有字符。
\w 匹配字母或数字或下划线或者汉字
\s 匹配任意的空白字符
\d 匹配数字
\b匹配单词的开始或者结束
^ 匹配字符串的开始
$ 匹配字符串的结束

* 重复0次或者更多次
+ 重复一次或者更多次
? 重复0次或者1次
{n}重复n次
{n,}重复n次或者更多次
{n,m}重复n次到m次

\W 匹配不是字母或数字或下划线或者汉字
\S 匹配不是空白字符
\D 匹配不是数字
\B 匹配不是单词的开始或者结束
{^x} 匹配除了x以外的任意字符
{^aeiou}匹配除了aeiou外的字符

[0-9] 表示0-9之间的数字
[a-z] 表示a-z之间的字母
[A-Za-z0-9] 表示A-Za-z0-9中的任意一个字符

三.创建正则表达式对象

第一种创建方式

var regExp = /正则表达式/flags;

第二种创建方式—使用内置支持类RegExp

var regExp = new RegExp("正则表达式","flags");

flags是修饰符
在这里插入图片描述

四.实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <script>
        window.onload = function(){
            document.getElementById("button1").onclick = function(){
                var Elt = document.getElementById("text").value;
                var regExp = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
                var ok = regExp.test(Elt);
                if(!ok){
                    document.getElementById("error").innerText = "邮箱地址不合法";
                }
                else{
                    document.getElementById("error").innerText = "邮箱地址合法";
                }
            }
        }
    </script>
    <input type = "text" id = "text"/>
    <span  style = "color:red ; font-size:12px" id = "error"></span>
    <br/>
    <input type = "button" id = "button1" value = "emailButton"/>
</body>
</html>

在这里插入图片描述
我们可以改进一下,当鼠标在文本框中要输入时,不会出现提示按钮

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <script>
        window.onload = function(){
            document.getElementById("button1").onclick = function(){
                var Elt = document.getElementById("text").value;
                var regExp = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
                var ok = regExp.test(Elt);
                if(!ok){
                    document.getElementById("error").innerText = "邮箱地址不合法";
                }
                else{
                    document.getElementById("error").innerText = "邮箱地址合法";
                }
                document.getElementById("text").onfocus = function(){
                    document.getElementById("error").innerText = "";
                }
            }
        }
    </script>
    <input type = "text" id = "text"/>
    <span  style = "color:red ; font-size:12px" id = "error"></span>
    <br/>
    <input type = "button" id = "button1" value = "emailButton"/>
</body>
</html>

五.扩展字符串

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <script>
        window.onload = function(){
            document.getElementById("button1").onclick = function(){
                var textvalue = document.getElementById("text1").value;
                var textvalue1 = textvalue.trim();
                document.getElementById("text1").onclick = alert("--->" + textvalue1 + "<---");
            }
        }
    </script>
    <input type = "text" id = "text1"/>
    <input type = "button" value = "button"  id = "button1"/>
</body>
</html>

在这里插入图片描述

在这里插入图片描述
虽然现在的浏览器一般都可以兼容trim()函数,但是一些版本较低的浏览器没有trim()函数,于是我们想到能不能我们自己写一个这样的函数。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <script>
        String.prototype.trim = function(){
            return this.replace(/^\s+/,"").replace(/\s+$/,"");
        }
        window.onload = function(){
            document.getElementById("button1").onclick = function(){
                var textValue = document.getElementById("text1").value;
                var textValue1 = textValue.trim();
                document.getElementById("text1").onclick = alert("--->" + textValue1 + "<---");
            }
        }
    </script>
    <input type = "text" id = "text1"/>
    <input type = "button" value = "button"  id = "button1"/>
</body>
</html>

我们发现重写后,与原函数有同样的效果。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值