/\w+[\w\.]*@[\w\.]+\.\w+/
const regex = /\w+[\w\.]*@[\w\.]+\.\w+/ regex.test('666@email.com') // true regex.test('july@e.c') // true regex.test('_@email.com.cn') // true regex.test('july_1234@email.com') // true regex.test('@email.com') // false regex.test('julyemail.com') // false regex.test('july.email.com') // false regex.test('july@') // false regex.test('july@email') // false regex.test('july@email.') // false regex.test('july@.') // false regex.test('july@.com') // false regex.test('-~!#$%@email.com') // false
/https?:\/\/(\w*:\w*@)?[-\w\.]+(:\d+)?(\/([\w\/\.]*(\?\S+)?)?)?/
const regex = /https?:\/\/(\w*:\w*@)?[-\w\.]+(:\d+)?(\/([\w\/\.]*(\?\S+)?)?)?/ regex.test('http://www.forta.com/blog') // true regex.test('https://www.forta.com:80/blog/index.cfm') // true regex.test('https://www.forta.com') // true regex.test('http://ben:password@www.forta.com/') // true regex.test('http://localhost/index.php?ab=1&c=2') // true regex.test('http://localhost:8500/') // true
我在本地隨便寫了一個html文件,包含css、html和js3個部分,是一個完整的網頁。javascript
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> /* 這是css的多行註釋 這是css的多行註釋 這是css的多行註釋 */ * { margin: 0; padding: 0; /* 這是css的多行註釋 */ } html { color: #000; } </style> </head> <body> <h1>h1 title</h1> <!-- 這是html註釋 --> <h2>h2 title</h2> <!-- 這是html註釋 --> <button style="/* 這是行內css的註釋 */color: red/* 這是行內css的註釋 */">click me</button> <button onclick="/* 這是行內js的註釋 */alert('july')/* 這是行內js的註釋 */">click me 2</button> <!-- 這是html註釋 --> <button onclick="// 這是行內js的註釋 alert(/* 註釋 */'july') //這是行內js的註釋 'sdfs' " style='color: blue'>click me 3</button> <!-- 這是html註釋 --> <script> // 這是js單行註釋 // 這是js單行註釋 這是js單行註釋 function func() { console.log('test'); // 這是js單行註釋 } /* * 這是js多行註釋 * 這是js多行註釋 這是js多行註釋 */ function func2() { // 這是js單行註釋 /* 這是js多行註釋 */ console.log('test'); /* 這是js多行註釋 */ } </script> </body> </html>
const htmlStr = `html字符串`; // 將上面的html內容拷貝於此,因爲太長,就再也不拷貝 // 匹配 /* */ htmlStr.match(/\/\*[^]*?\*\//g); // 該行代碼會返回一個數組,長度爲10,數組的每一個元素分別對應匹配到的 /* */,因爲篇幅有限,就不將結果展現到這裏了 // 匹配 <!-- --> htmlStr.match(/<!--[^]*?-->/g); // 匹配 // htmlStr.match(/(\/\/.*?(?=(["']\s*\w+\s*=)|(["']\s*>)))|(\/\/.*)/g);
<button onclick=" alert('july') //這是行內js的註釋 'sdfs' " style='color: blue'>click me 3</button> <button onclick=" alert('july') //這是行內js的註釋 'sdfs' ">click me 3</button>
咱們經過圖片詳細解析一下
php
爲了方便,最終代碼選擇在node環境中執行,由於最初的需求是將html中的全部註釋去掉,因此咱們使用了字符串的replace方法,該方法接收兩個參數,第一個參數是正則表達式,第二個參數是須要替換成的內容。css
const fs = require('fs'); // regex.html 是放在同級目錄下的html源文件 fs.readFile('./regex.html', 'utf8', (err, data) => { if (err) throw err; console.log( data .replace(/\/\*[^]*?\*\//g, '') // 替換 /* */ .replace(/<!--[^]*?-->/g, '') // 替換 <!-- --> .replace(/(\/\/.*?(?=(["']\s*\w+\s*=)|(["']\s*>)))|(\/\/.*)/g, '') // 替換 // ); });