正则表达式是处理字符串的一种强大工具,尤其在jQuery中,它们可以极大地提高我们选择元素和处理数据的效率。以下是20个实用的正则表达式及其解析和应用场景。

1. 匹配数字

var regex = /^\d+$/;

解析\d 表示匹配任何数字,+ 表示匹配前面的子表达式一次或多次。

应用:检查用户输入的是否为纯数字。

var input = "12345";
if (regex.test(input)) {
    alert("输入的是数字");
} else {
    alert("输入的不是数字");
}

2. 匹配邮箱地址

var regex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/;

解析:此表达式匹配常见的邮箱地址格式。

应用:验证用户输入的邮箱地址是否正确。

var input = "example@example.com";
if (regex.test(input)) {
    alert("邮箱地址正确");
} else {
    alert("邮箱地址不正确");
}

3. 匹配电话号码

var regex = /^(\+\d{1,2}\s)?\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}$/;

解析:此表达式支持国际电话号码格式。

应用:验证用户输入的电话号码格式。

var input = "+1 (123) 456-70";
if (regex.test(input)) {
    alert("电话号码格式正确");
} else {
    alert("电话号码格式不正确");
}

4. 匹配URL

var regex = /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/;

解析:此表达式匹配大多数URL格式。

应用:验证用户输入的URL是否正确。

var input = "http://www.example.com";
if (regex.test(input)) {
    alert("URL格式正确");
} else {
    alert("URL格式不正确");
}

5. 匹配IP地址

var regex = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;

解析:此表达式匹配标准的IPv4地址格式。

应用:验证用户输入的IP地址是否正确。

var input = "192.168.1.1";
if (regex.test(input)) {
    alert("IP地址格式正确");
} else {
    alert("IP地址格式不正确");
}

6. 匹配日期(YYYY-MM-DD)

var regex = /^\d{4}-\d{2}-\d{2}$/;

解析:此表达式匹配格式为YYYY-MM-DD的日期。

应用:验证用户输入的日期格式。

var input = "2023-01-01";
if (regex.test(input)) {
    alert("日期格式正确");
} else {
    alert("日期格式不正确");
}

7. 匹配时间(HH:MM)

var regex = /^\d{2}:\d{2}$/;

解析:此表达式匹配格式为HH:MM的时间。

应用:验证用户输入的时间格式。

var input = "12:34";
if (regex.test(input)) {
    alert("时间格式正确");
} else {
    alert("时间格式不正确");
}

8. 匹配日期时间(YYYY-MM-DD HH:MM)

var regex = /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}$/;

解析:此表达式匹配格式为YYYY-MM-DD HH:MM的日期时间。

应用:验证用户输入的日期时间格式。

var input = "2023-01-01 12:34";
if (regex.test(input)) {
    alert("日期时间格式正确");
} else {
    alert("日期时间格式不正确");
}

9. 匹配身份证号码

var regex = /^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i;

解析:此表达式匹配中国的身份证号码格式。

应用:验证用户输入的身份证号码是否正确。

var input = "11010519880605002X";
if (regex.test(input)) {
    alert("身份证号码格式正确");
} else {
    alert("身份证号码格式不正确");
}

10. 匹配密码(至少8位,包含字母、数字和特殊字符)

var regex = /^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,}$/;

解析:此表达式确保密码至少8位,包含字母、数字和特殊字符。

应用:验证用户设置的密码是否符合要求。

var input = "Password123!";
if (regex.test(input)) {
    alert("密码符合要求");
} else {
    alert("密码不符合要求");
}

11. 匹配HTML标签

var regex = /<([a-z]+)[^>]*>(.*?)<\/\1>/i;

解析:此表达式匹配HTML标签及其内容。

应用:提取页面中的HTML标签。

var input = "<div>Hello, <b>world</b>!</div>";
var matches = regex.exec(input);
if (matches) {
    alert(matches[0]); // <div>Hello, <b>world</b>!</div>
}

12. 匹配URL链接

var regex = /http(s)?:\/\/[^\s]+/gi;

解析:此表达式匹配文本中的URL链接。

应用:提取页面中的URL链接。

var input = "Check out this website http://www.example.com";
var links = input.match(regex);
if (links) {
    alert(links[0]); // http://www.example.com
}

13. 匹配HTML属性

var regex = /(\w+)=["']?((?:(?:(?<!["']|\s))[\s\S])*?)["']?/gi;

解析:此表达式匹配HTML属性及其值。

应用:解析HTML标签的属性。

var input = "<a href='http://www.example.com' class='link'>Click me</a>";
var attributes = input.match(regex);
if (attributes) {
    alert(attributes[0]); // href="http://www.example.com"
}

14. 匹配HTML标签属性值

var regex = /"([^"]*)"/gi;

解析:此表达式匹配双引号内的属性值。

应用:提取HTML标签属性值。

var input = "<a href='http://www.example.com' class='link'>Click me</a>";
var values = input.match(regex);
if (values) {
    alert(values[0]); // "http://www.example.com"
}

15. 匹配HTML标签属性名

var regex = /(\w+)=["']?((?:(?:(?<!["']|\s))[\s\S])*?)["']?/gi;

解析:此表达式匹配HTML标签属性名。

应用:提取HTML标签属性名。

var input = "<a href='http://www.example.com' class='link'>Click me</a>";
var names = input.match(regex);
if (names) {
    alert(names[0]); // href="http://www.example.com"
}

16. 匹配HTML标签内容

var regex = /<([a-z]+)[^>]*>(.*?)<\/\1>/gi;

解析:此表达式匹配HTML标签及其内容。

应用:提取HTML标签内容。

var input = "<div>Hello, <b>world</b>!</div>";
var contents = input.match(regex);
if (contents) {
    alert(contents[0]); // <div>Hello, <b>world</b>!</div>
}

17. 匹配HTML标签内容(去除HTML标签)

var regex = /<[^>]*>(.*?)<\/[^>]*>/gi;

解析:此表达式匹配HTML标签内容,并去除标签。

应用:提取HTML标签内容,并去除标签。

var input = "<div>Hello, <b>world</b>!</div>";
var content = input.replace(regex, "$1");
alert(content); // Hello, world!

18. 匹配HTML标签属性

var regex = /(\w+)=["']?((?:(?:(?<!["']|\s))[\s\S])*?)["']?/gi;

解析:此表达式匹配HTML标签属性。

应用:提取HTML标签属性。

var input = "<a href='http://www.example.com' class='link'>Click me</a>";
var attributes = input.match(regex);
if (attributes) {
    alert(attributes[0]); // href="http://www.example.com"
}

19. 匹配HTML标签属性值

var regex = /"([^"]*)"/gi;

解析:此表达式匹配双引号内的属性值。

应用:提取HTML标签属性值。

var input = "<a href='http://www.example.com' class='link'>Click me</a>";
var values = input.match(regex);
if (values) {
    alert(values[0]); // "http://www.example.com"
}

20. 匹配HTML标签属性名

var regex = /(\w+)=["']?((?:(?:(?<!["']|\s))[\s\S])*?)["']?/gi;

解析:此表达式匹配HTML标签属性名。

应用:提取HTML标签属性名。

var input = "<a href='http://www.example.com' class='link'>Click me</a>";
var names = input.match(regex);
if (names) {
    alert(names[0]); // "href"
}

以上是20个实用的正则表达式及其解析和应用场景。希望这些表达式能帮助你更好地处理字符串,提高你的jQuery编程能力。