JS正则表达式(火星文)

xiaoxiao2025-08-14  25

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>正则表达式(火星文)</title> </head> <body> <input type="text" id="myText" placeholder="你要发言的内容"> <button onclick="send()">发送消息</button> <textarea id="myArea" cols="30" rows="10"></textarea> <script> // 正则表达式: // 它是一个功能非常非常非常非常非常强大的字符串匹配功能 // 有了它你就可以指定自己的规则, 然后去判断某个字符串是否符合你的规则(比如验证邮箱, 账号, 密码, 电话, 身份证号 等格式) function send(){ var str = document.getElementById("myText").value; var reg = /[中国人民很棒]/g; // 字符串match方法, 里面传入一个正则表达式, 得到正则匹配出来的结果, 结果是一个数组 // var resultStr = str.match(reg); // 字符串replace方法, 第一个参数不光可以参数一个固定字符, 还可以传入正则表达式来匹配, 字符串里的内容 var resultStr = str.replace(reg, "*"); document.getElementById("myArea").value = resultStr; } // 正则表达式 符号的意义 /* * [] 匹配里面任意一个字符 * [1234567890] [0-9] [\d] * [abc] [a-z] * - 代表一个范围 * 字符都是用ASCII码来寻找的 * */ var str2 = "12345abc67"; var reg2 = /[A-z]/g; console.log(str2.match(reg2)); // ["a", "b", "c"] // \ 斜杠的意义 (转义) var str3 = "我是/haha"; var reg3 = /\//g; console.log(str3.match(reg3)); // ["/"] // ^ 房子盖 匹配 以。。。开头 var str4 = "a201541030209"; var reg4 = /^[a-z]/g; // 以a-z任意一个字符作为整个字符串的开头 console.log(str4.match(reg4)); // ["a"] // [^0-9] 匹配 除了 0-9之外 //  ^如果在[ ]内  比如 [^0-9]  意思是除了数字之外  var str44 = '1232我' var reg44 = /[^0-9]/g console.log(str44.match(reg44)) // ["我"] // $ 以。。。结束 var str5 = "小花好好学习8"; var reg5 = /[0-9]$/g; console.log(str5.match(reg5)); // ["8"] // .点 代表匹配 任意一个字符(占位符) 除了\n以外 // * 代表匹配 前面的表达式 1次 或 多次 // 练习:要求匹配以abc任意一个开头,并且 XYZ任意一个结尾的正则表达式 var str6 = "c大大很棒棒Z"; var reg6 = /^[abc].*[XYZ]$/g; console.log(str6.match(reg6)); // ["c大大很棒棒Z"] // {n} 代表匹配 前面表达式 n次 // {n, m} 代表匹配前面表达式 最少n次 最多m次 // {n, } 代表匹配前面表达式 最少n次 // { , m} 代表匹配前面表达式 最多m次 var str7 = "acd12535"; var reg7 = /^[a-z]{3}/g; // 匹配a-z开头字符3次 (因为有^ 必须是开头连续3个如果被打断, 则获取不到) var reg7_1 = /^[a-z]{1,3}/g; // 比如以字符开头,至少1次最多3次匹配 console.log(str7.match(reg7_1)); // ["acd"] // 例:判断用户输入的是否是电话号码 var str8 = "13040507890"; var reg8 = /^1[345678][\d]{9}$/; console.log(str8.match(reg8)); // ["13040507890", index: 0, input: "13040507890", groups: undefined] // 判断邮箱格式 是否正确 var str9 = "lidongxu@123.com"; var reg9 = /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/; console.log(str9.match(reg9)); //  ["lidongxu@123.com", "lidongxu", "123", "com", index: 0, input: "lidongxu@123.com", groups: undefined] // 判断身份证格式是否正确 var str10 = "21100919811130213131"; var reg10 = /^\d{15}$|^\d{18}$|^\d{17}(\d|x|X)$/g; console.log(str10.match(reg10)); // null var str11 = "<html><head><title>我是title</title></head><body>" + "<ul><li>1</li><li>2</li><li>3</li><li>4</li></ul></body></html>"; var reg11 = /<li>(\d)??<\/li>/g; console.log(str11.match(reg11)); // ["<li>1</li>", "<li>2</li>", "<li>3</li>", "<li>4</li>"] </script> </body> </html>

*************************************************************************

JavaScript 正则表达式 g、i、m分别代表的意思

g:表示全局(global)模式,即模式将被应用于所有字符串,而非在发现第一个匹配项时立即  停止;

i:表示不区分大小写(case-insensitive)模式,即在确定匹配项时忽略模式与字符串的大小写;

m:表示多行(multiline)模式,即在到达一行文本末尾时还会继续查找下一行中是否存在与模  式匹配的项。 *************************************************************************

.            任何字符 a?            a一次或一次也没有 a*            a零次或多次 a+            a一次或多次 a{n}? a恰好 n 次 a{n,}?    a至少n次  a{n,m}?    a至少n次,但是不超过m次 [abc]    a、b 或 c(简单类) [^abc]    任何字符,除了 a、b 或 c(否定) [a-zA-Z]            a 到 z 或 A 到 Z,两头的字母包括在内(范围) [a-d[m-p]]    a 到 d 或 m 到 p:[a-dm-p](并集) [a-z&&[def]]    d、e 或 f(交集) [a-z&&[^bc]]    a 到 z,除了 b 和 c:[ad-z](减去) [a-z&&[^m-p]]    a 到 z,而非 m 到 p:[a-lq-z](减去) \d            数字   或者  [0-9] \D            非数字 或者  [^0-9] \s            空白字符 或者 [ \t\n\x0B\f\r] \S            非空白字符 或者 [^\s] \w            单词字符  或者 [a-zA-Z_0-9] \W            非单词字符  或者 [^\w] ^            行的开头     ^如果在[ ]内  比如 [^\d] 意思是除了数字之外  $            行的结尾 \b            单词边界 \B            非单词边界 \A            输入的开头 \G            上一个匹配的结尾 \Z            输入的结尾,仅用于最后的结束符(如果有的话) \z            输入的结尾

转载请注明原文地址: https://www.6miu.com/read-5034836.html

最新回复(0)