1. 程式人生 > >JS常用正則表示式備忘錄

JS常用正則表示式備忘錄

摘要: 玩轉正則表示式。

Fundebug經授權轉載,版權歸原作者所有。

正則表示式或“regex”用於匹配字串的各個部分 下面是我建立正則表示式的備忘單。

匹配正則

使用 .test() 方法

let testString = "My test string";
let testRegex = /string/;
testRegex.test(testString);

匹配多個模式

使用操作符號 |

const regex = /yes|no|maybe/;    

忽略大小寫

使用i標誌表示忽略大小寫

const caseInsensitiveRegex = /ignore case/i;
const testString = 'We use the i flag to iGnOrE CasE';
caseInsensitiveRegex.test(testString); // true

提取變數的第一個匹配項

使用 .match() 方法

const match = "Hello World!".match(/hello/i); // "Hello"

提取陣列中的所有匹配項

使用 g 標誌

const testString = "Repeat repeat rePeAT";
const regexWithAllMatches = /Repeat/gi;
testString.match(regexWithAllMatches); // ["Repeat", "repeat", "rePeAT"]   

匹配任意字元

使用萬用字元. 作為任何字元的佔位符

// To match "cat", "BAT", "fAT", "mat"
const regexWithWildcard = /.at/gi;
const testString = "cat BAT cupcake fAT mat dog";
const allMatchingWords = testString.match(regexWithWildcard); // ["cat", "BAT", "fAT", "mat"]    

用多種可能性匹配單個字元

  • 使用字元類,你可以使用它來定義要匹配的一組字元
  • 把它們放在方括號裡 []
//匹配 "cat" "fat" and "mat" 但不匹配 "bat"
const regexWithCharClass = /[cfm]at/g;
const testString = "cat fat bat mat";
const allMatchingWords = testString.match(regexWithCharClass); // ["cat", "fat", "mat"]    

匹配字母表中的字母

使用字符集內的範圍 [a-z]

const regexWidthCharRange = /[a-e]at/;

const regexWithCharRange = /[a-e]at/;
const catString = "cat";
const batString = "bat";
const fatString = "fat";

regexWithCharRange.test(catString); // true
regexWithCharRange.test(batString); // true
regexWithCharRange.test(fatString); // false

匹配特定的數字和字母

你還可以使用連字元來匹配數字

const regexWithLetterAndNumberRange = /[a-z0-9]/ig;
const testString = "Emma19382";
testString.match(regexWithLetterAndNumberRange) // true

匹配單個未知字元

要匹配您不想擁有的一組字元,使用否定字符集 ^

const allCharsNotVowels = /[^aeiou]/gi;
const allCharsNotVowelsOrNumbers = /[^aeiou0-9]/gi;

匹配一行中出現一次或多次的字元

使用 + 標誌

const oneOrMoreAsRegex = /a+/gi;
const oneOrMoreSsRegex = /s+/gi;
const cityInFlorida = "Tallahassee";

cityInFlorida.match(oneOrMoreAsRegex); // ['a', 'a', 'a'];
cityInFlorida.match(oneOrMoreSsRegex); // ['ss'];   

匹配連續出現零次或多次的字元

使用星號 *

const zeroOrMoreOsRegex = /hi*/gi;
const normalHi = "hi";
const happyHi = "hiiiiii";
const twoHis = "hiihii";
const bye = "bye";

normalHi.match(zeroOrMoreOsRegex); // ["hi"]
happyHi.match(zeroOrMoreOsRegex); // ["hiiiiii"]
twoHis.match(zeroOrMoreOsRegex); // ["hii", "hii"]
bye.match(zeroOrMoreOsRegex); // null

惰性匹配

  • 字串中與給定要求匹配的最小部分
  • 預設情況下,正則表示式是貪婪的(匹配滿足給定要求的字串的最長部分)
  • 使用 ? 阻止貪婪模式(惰性匹配 )
const testString = "catastrophe";
const greedyRexex = /c[a-z]*t/gi;
const lazyRegex = /c[a-z]*?t/gi;
    
testString.match(greedyRexex); // ["catast"]
testString.match(lazyRegex); // ["cat"]   

匹配起始字串模式

要測試字串開頭的字元匹配,請使用插入符號^,但要放大開頭,不要放到字符集中

const emmaAtFrontOfString = "Emma likes cats a lot.";
const emmaNotAtFrontOfString = "The cats Emma likes are fluffy.";
const startingStringRegex = /^Emma/;

startingStringRegex.test(emmaAtFrontOfString); // true
startingStringRegex.test(emmaNotAtFrontOfString); // false    

程式碼部署後可能存在的BUG沒法實時知道,事後為了解決這些BUG,花了大量的時間進行log 除錯,這邊順便給大家推薦一個好用的BUG監控工具 Fundebug

匹配結束字串模式

使用 $ 來判斷字串是否是以規定的字元結尾

const emmaAtBackOfString = "The cats do not like Emma";
const emmaNotAtBackOfString = "Emma loves the cats";
const startingStringRegex = /Emma$/;

startingStringRegex.test(emmaAtBackOfString); // true
startingStringRegex.test(emmaNotAtBackOfString); // false    

匹配所有字母和數字

使用\word 簡寫

const longHand = /[A-Za-z0-9_]+/;
const shortHand = /\w+/;
const numbers = "42";
const myFavoriteColor = "magenta";

longHand.test(numbers); // true
shortHand.test(numbers); // true
longHand.test(myFavoriteColor); // true
shortHand.test(myFavoriteColor); // true

除了字母和數字,其他的都要匹配

\W 表示 \w 的反義

const noAlphaNumericCharRegex = /\W/gi;
const weirdCharacters = "!_$!!";
const alphaNumericCharacters = "ab283AD";

noAlphaNumericCharRegex.test(weirdCharacters); // true
noAlphaNumericCharRegex.test(alphaNumericCharacters); // false

匹配所有數字

你可以使用字符集[0-9],或者使用簡寫 \d

const digitsRegex = /\d/g;
const stringWithDigits = "My cat eats $20.00 worth of food a week.";

stringWithDigits.match(digitsRegex); // ["2", "0", "0", "0"]

匹配所有非數字

\D 表示 \d 的反義

const nonDigitsRegex = /\D/g;
const stringWithLetters = "101 degrees";

stringWithLetters.match(nonDigitsRegex); // [" ", "d", "e", "g", "r", "e", "e", "s"]

匹配空格

使用 \s 來匹配空格和回車符

const sentenceWithWhitespace = "I like cats!"
var spaceRegex = /\s/g;
whiteSpace.match(sentenceWithWhitespace); // [" ", " "]

匹配非空格

\S 表示 \s 的反義

const sentenceWithWhitespace = "C a t"
const nonWhiteSpaceRegex = /\S/g;
sentenceWithWhitespace.match(nonWhiteSpaceRegex); // ["C", "a", "t"]

匹配的字元數

你可以使用 {下界,上界} 指定一行中的特定字元數

const regularHi = "hi";
const mediocreHi = "hiii";
const superExcitedHey = "heeeeyyyyy!!!";
const excitedRegex = /hi{1,4}/;

excitedRegex.test(regularHi); // true
excitedRegex.test(mediocreHi); // true
excitedRegex.test(superExcitedHey); //false

匹配最低個數的字元數

使用{下界, }定義最少數量的字元要求,下面示例表示字母 i 至少要出現2次

const regularHi = "hi";
const mediocreHi = "hiii";
const superExcitedHey = "heeeeyyyyy!!!";
const excitedRegex = /hi{2,}/;

excitedRegex.test(regularHi); // false
excitedRegex.test(mediocreHi); // true
excitedRegex.test(superExcitedHey); //false

匹配精確的字元數

使用{requiredCount}指定字元要求的確切數量

const regularHi = "hi";
const bestHi = "hii";
const mediocreHi = "hiii";
const excitedRegex = /hi{2}/;

excitedRegex.test(regularHi); // false
excitedRegex.test(bestHi); // true
excitedRegex.test(mediocreHi); //false  

匹配0次或1次

使用 ? 匹配字元 0 次或1次

const britishSpelling = "colour";
const americanSpelling = "Color";
const languageRegex = /colou?r/i;

languageRegex.test(britishSpelling); // true
languageRegex.test(americanSpelling); // true

關於Fundebug

Fundebug專注於JavaScript、微信小程式、微信小遊戲、支付寶小程式、React Native、Node.js和Java線上應用實時BUG監控。 自從2016年雙十一正式上線,Fundebug累計處理了10億+錯誤事件,付費客戶有Google、360、金山軟體、百姓網等眾多品牌企業。歡迎大家免費試用

相關推薦

JS常用表示式備忘錄

摘要: 玩轉正則表示式。 原文:JS常用正則表示式備忘錄 作者:前端小智 Fundebug經授權轉載,版權歸原作者所有。 正則

常用表示式大全,手機 電話 郵箱 身份證 最嚴格的驗證 IP地址 網址 日期等,一般前臺js驗證,來這裡就夠了

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Javascript常用表示式以及JS常見表示式筆試題

JS正則表示式,在表單驗證等方面都有應用,下面結合學習經過,整理一些初學 者所需要掌握的一些基本JS正則規則: 1.正則表示式基礎語法練習 (1)校驗郵政編碼(由六位組成) 這裡要注意,不能寫成/

JS常用表示式 驗證密碼使用者名稱等JS

JS的正則表示式 //校驗是否全由數字組成 function isDigit(s)  {  var patrn=/^[0-9]{1,20}$/;  if (!patrn.exec(s)) return false  return true  } //校驗登入名:只能輸入5-20個以字母開頭、可帶數字、“_

常用JS驗證—表示式

1。date日期var _reg = /^[0-9]{4}-(((0?[13578]|(10|12))-(0?[1-9]|[1-2][0-9]|3[0-1]))|(0?2-(0[1-9]|[1-2][

JS常用表示式 驗證密碼

JS的正則表示式 強:字母+數字+特殊字元   ^(?![a-zA-z]+$)(?!\d+$)(?![[email protected]#$%^&*]+$)(?![a-zA-z\d]+$)(?![[emai

js 表示式判斷非法字元 常用表示式

js 正則表示式匹配非法字元 示例(此示例驗證通過) var pat=new RegExp("[^a-zA-Z0-9\_\u4e00-\u9fa5]","i"); var strTest = $("#testId").val(); if(pat.test(st

js一些常用的校驗(工作中用的較多的,並附常用表示式

做web的經常會遇到一些js校驗,比如身份證呀,手機號呀,郵箱呀等等,分享下我工作中遇到的這些,整理了下 /* * 校驗是否為空(null/空串) */ var checkNull = function(str){ if(str == null || str ==

js常用表達式2

常用正則 pan intern xxxxxxxx span size post 英文字母 只能輸入數字 整數或者小數:^[0-9]+\.{0,1}[0-9]{0,2}$ 只能輸入數字:"^[0-9]*$"。 只能輸入n位的數字:"^\d{n}$"。 只能輸入至少n位的數字:

js常用收集

適合 spa aud 中間 pos nbsp audio 大於 正常 1:非純空白字符串且長度大於1: /^\s*\S+[\s\S]*$/ ,   右側可以正常匹配:“ 11 1 1 a ” 、“ 1 aa”

php 常用表示式彙總

1.    平時做網站經常要用正則表示式,下面是一些講解和例子,僅供大家參考和修改使用:  2.    "^\d+$"  //非負整數(正整數 + 0)  3.   &n

常用表示式符號

正則表示式總結: \b  : 單詞的開頭或結尾 .   : 除了換行符以外的任意字元 *    :前邊的內容可以連續重複使用任意次 \n    : 換行符 \d    :匹配一個數字 {n}

常用表示式收集

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

js表示式test()方法

正則表示式即描述字串規則的表示式 /pattern/attrs          /規則/屬性 new RegExp(pattern,attrs) regexObj.test(str)方法:測試正則表示式與指定字串是否匹

js利用表示式修改某個字元

   js中由於沒有replaceAll()方法,需要替換字串的某些字元時候,得重複呼叫replace()方法,很是累贅。  可以採用正則表示式處理,如以下程式把toolsStartTime中的‘-’替換為‘/’。     var

JS採用表示式獲取位址列引數

getQueryString:function(name) { var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); var r = decodeURI(decodeURI(window.location.search)

shell 常用表示式

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

常用表示式(copy)

一、校驗數字的表示式 數字:^[0-9]*$ n位的數字:^\d{n}$ 至少n位的數字:^\d{n,}$ m-n位的數字:^\d{m,n}$ 零和非零開頭的數字:^(0|[1-9][0-9]*)$ 非零開頭的最多帶兩位小數的數字:^([1-9][0-9]*)+(\.[0

常用表示式(高亮,markdown)

校驗數字的表示式 1 數字:^[0-9]*$ 2 n位的數字:^\d{n}$ 3 至少n位的數字:^\d{n,}$ 4 m-n位的數字:^\d{m,n}$ 5 零和非零開頭的數字:^(0|[1-9][0-9]*)$ 6 非零開頭的最多帶兩位小數的數字:^([1-9][0-9]*)+(

常用表示式_轉載

轉自網路: 常用正則表示式大全!(例如:匹配中文、匹配html)  匹配中文字元的正則表示式: [u4e00-u9fa5]      評註:匹配中文還真是個頭疼的事,有了這個表示式就好辦了    匹配雙位元組字元(包括漢字在內):[^x0