1.JS中的substring() 方法:
substring() 方法用于提取字符串中介于两个指定下标之间的字符,包括空格键。
substring() 方法返回的子串包括 开始 处的字符,但不包括 结束 处的字符。
string.substring(from, to)
from:必需。一个非负的整数,规定要提取的子串的第一个字符在 string Object 中的位置。
to:可选。一个非负的整数,比要提取的子串的最后一个字符在 string Object 中的位置多 1。
如果省略该参数,那么返回的子串会一直到字符串的结尾。
例:
const obj="abc def ghi jkl mno p";
//相当于从第三位开始截取,不包括前,然后到最后加一个回车
console.log("obj.substring(3)+"<br>"");//def ghi jkl mno p
//相当于从第二位开始截取到第八位,不包括前但是包括后,空格不显示出来
console.log("obj.substring(2,8)");//c def
2.JS中的replace() 方法:
replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
string.replace(searchvalue,newvalue)
searchvalue:必须。规定子字符串或要替换的模式的 RegExp 对象。请注意,如果该值是一个字 符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象。
newvalue:必需。一个字符串值。规定了替换文本或生成替换文本的函数。
例:
const obj=""Mr Blue has a blue house and a blue car";
//blue替换成red
console.log(obj.replace(/blue/g,"red"));//Mr Blue has a red house and a red car
//忽略大小写的格式
console.log(obj.replace(/blue/gi,"red"));//Mr red has a red house and a red car
3.JS中的正则判断。
RegExp
构造函数用于创建正则表达式对象。
例:尝试创建一个正则表达式对象,该对象匹配由数字组成的字符串。
正则表达式中的量词
{n}
用于指定前面的元素恰好出现n
次。在正则表达式中,{n}
前面需要有空格。使用
test
方法时,应该将正则表达式和要测试的字符串作为参数传递。在这个例子中,obj
应该是一个字符串。
const num = /* 这里是你要匹配的数字数量 */;
const regex = new RegExp(`\\d{${num}}`, 'g'); // 注意空格
const str = obj.toString(); // 确保 obj 是一个字符串
const result = regex.test(str);
result
将是一个布尔值,表示 obj
是否至少包含一个符合正则表达式 \\d{num}
的子串。
请注意,如果 obj
不是一个字符串,那么在调用 toString()
之前,你需要先检查它的类型,以确保它转换为字符串是安全的。
正则匹配:
1.检查手机号格式是否正确,以1开头的11位数字 : /^1\d{10}$/
2.邮箱地址:/^((^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)+)|(".+"))@((\[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
Tip:
这段正则表达式是一个用于验证电子邮件地址的模式,它尝试匹配符合一般电子邮件地址格式的字符串。该模式使用了几个正则表达式的元字符和构造来实现这一点。让我们来分解一下:
^
- 它断言行的开始。((^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)+)|(".+"))
- 这是一个非捕获组,它检查电子邮件地址中是否存在两种可能的模式:- 第一个模式是
^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)+
,它看起来是在电子邮件地址中查找以<>()[]\\.,;:\s@"
开头的模式,后面跟着一个或多个不是<>()[]\\.,;:\s@"
的字符,并以一个点号.
结束,然后跟着一个或多个不是<>()[]\\.,;:\s@"
的字符。这是一个非常具体的模式,可能不会匹配所有有效的电子邮件地址。 - 第二个模式是
(".+")
,它看起来是在电子邮件地址的开头有一个双引号"
,后面跟着一个或多个字符。这是电子邮件地址本地部分更常见的模式。
- 第一个模式是
@
- 它断言电子邮件地址中存在 "@" 符号。(($ 0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} $)|(([a-zA-Z\-0-9]+\.)+[a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,})
- 这是一个非捕获组,它检查电子邮件地址的域名部分是否存在两种可能的模式:- 第一个模式是
($ 0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} $)
,它看起来是在方括号中查找一个字面的IP地址。 - 第二个模式是
(([a-zA-Z\-0-9]+\.)+[a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}
,它看起来是一个由字母数字字符和连字符组成的域名,后面跟着一个或多个点号,并以两个或更多的字母字符结束。
- 第一个模式是
$
- 它断言行的结束。
这个正则表达式相当复杂,可能无法涵盖所有根据官方规范(RFC 5322和RFC 6530用于国际化电子邮件地址)有效的电子邮件地址格式。需要注意的是,通过正则表达式验证电子邮件地址在本质上是不完美的,因为根据标准,有效的电子邮件地址格式有很多种。
const email = "example@email.com";
const regex = /^((^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)+)|(".+"))@(($ 0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} $)|(([a-zA-Z\-0-9]+\.)+[a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,})$/;
if (regex.test(email)) {
console.log("有效的电子邮件地址");
} else {
console.log("无效的电子邮件地址");
}
这是正则表达式中可用的其他一些修饰符:
i
:不区分大小写的匹配。m
:多行模式,影响^
和$
的行为。y
:粘连模式,影响^
和$
的行为,与m
修饰符类似。u
:Unicode 模式,影响一些特殊字符的行为。s
:点号.
匹配包括换行符在内的所有字符。c
:单行模式,^
和$
匹配字符串的开始和结束。- g:在整个输入字符串中查找匹配,而不是在找到第一个匹配后停止。返回所有匹配项,而不是只返回第一个匹配项。