正則 - 阮一峰

學習地址

一 正則實例方法

1. test

  • 正則實例.test返回布爾值
var r = /x/g;
var s = '_x_x';r.lastIndex // 0
r.test(s) // truer.lastIndex // 2
r.test(s) // truer.lastIndex // 4
r.test(s) // false
  • 死循環,因為while循環的每次匹配條件都是一個新的正則表達式,導致lastIndex屬性總是等于0。
var count = 0;
while (/a/g.test('babaa')) count++;
  • fixed
var count = 0;
var test1 = /a/g
while (test1.test('babaa')) count++;
console.log(count) // 3

2. exec

  • 正則實例.exec返回數組,匹配不到時返回null
  • g全局 + lastIndex : 會從上次結束的位置繼續
var reg = /a/g;
var str = 'abc_abc_abc'var r1 = reg.exec(str);
r1 // ["a"]
r1.index // 0
reg.lastIndex // 1var r2 = reg.exec(str);
r2 // ["a"]
r2.index // 4
reg.lastIndex // 5var r3 = reg.exec(str);
r3 // ["a"]
r3.index // 8
reg.lastIndex // 9var r4 = reg.exec(str);
r4 // null
reg.lastIndex // 0
  • 組匹配:如果正則表示式包含圓括號(即含有“組匹配”),第一個成員是整個匹配成功的結果,后面的成員就是圓括號對應的匹配成功的組。
var s = '_x_x';
var r = /_(x)/;r.exec(s) // ["_x", "x"]
  • 第一個成員是第一個匹配上的,不會返回全部
var r = /a(b+)a/;
var arr = r.exec('_abbba_aba_');arr // ["abbba", "bbb"]
  • 返回所有匹配
var reg = /a/g;
// 不加g會死循環
var str = 'abc_abc_abc'while(true) {var match = reg.exec(str);if (!match) break;console.log('#' + match.index + ':' + match[0]);
}
// #0:a
// #4:a
// #8:a

二 字符串方法

1. match

  • 字符串.match():返回一個數組,如果正則表達式帶有g修飾符,成員是所有匹配的子字符串(該方法與正則對象的exec方法行為不同)

  • 字符串的search/replace/split都可以和正則配合使用

  • 去除所有空格

var str = '  #id div.class  ';
str = str.replace(/\s+/g, '')
console.log(str) // #iddiv.class

2. replace

  • replace方法的第二個參數還可以是一個函數,將每一個匹配內容替換為函數返回值。
'3 and 5'.replace(/[0-9]+/g, function (match) {return 2 * match;
})
// "6 and 10"var a = 'The quick brown fox jumped over the lazy dog.';
var pattern = /quick|brown|lazy/ig;a.replace(pattern, function replacer(match) {return match.toUpperCase();
});
// The QUICK BROWN fox jumped over the LAZY dog.

replace模板替換

在這里插入圖片描述

  • 正則所匹配的內容會被第二個參數的返回值替換掉。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/250996.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/250996.shtml
英文地址,請注明出處:http://en.pswp.cn/news/250996.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LintCode 6.合并排序數組 ||

import org.junit.Test;import java.util.Arrays;public class MergeSort {/*** param A: sorted integer array A* param B: sorted integer array B* return: A new sorted integer array* <p>* 合并排序數組 II* 合并兩個排序的整數數組A和B變成一個新的數組。* <p…

算法 --- 有效的括號

解題思路: 1.對括號分別賦值(左括號大于0,右括號小于0),方便后期比較 2.使用棧,對于大于0的字符串入棧,對于小于0的字符串,檢查棧中是否有元素,若沒有返回false,否則拿出棧頂的一個元素,和現在的元素進行比較 /** * param {string} s * return {boolean} */ var isValid func…

ES6-14 Unicode表示法、字符串方法、模板字符串

Unicode表示法 本身能正常識別的&#xff0c;加{}也能識別&#xff0c;花括號內的內容表示碼點 parseInt(0061,16) // 十進制的97&#xff0c;97在ASCII碼中對應a console.log(\u0061) // a console.log(\u{0061}) // a console.log(\u{61}) // a原型上方法 codePointAt(十進…

對 js 高程 Preflighted Reqeusts 的理解

看JS高程遇到 Preflighted Reqeusts不大理解&#xff0c;遂百度下&#xff1a;轉自&#xff1a;http://todoit.me/ajax-preflight/最近在做一個 VUE 的項目的時候, 和后端的小伙伴對接口, 想方便開發, 于是要求后端的小伙伴在所有的接口都加上跨域的許可 (Access-Control-Allow…

算法 --- 刪除數組中重復項

解題思路: 如果輸入的數組長度為1,則返回該數組否則(len>2),使用i記錄當前待插入的位置,j記錄下一個與nums[i]不相等的位置,leng為待返回數組的長度當nums[i] ! nums[j]時,把j位置的值nums[j]放在i1位置.同時i,j /*** param {number[]} nums* return {number}*/ var remov…

如何理解 Linux 中的 load averages

原文&#xff1a;https://mp.weixin.qq.com/s?src11&timestamp1533697106&ver1047&signaturepoqrJFfcNABv4biKKpa4mZdIW7No2Wo1F5sbZL7ggoVS2GqcSqwQQ8hMulAmezT*zL*klB-eE5BeMyNuyjuIH7YgkBAN25i6*ahhEpWyxqx6vPct-Vr7q7AU0YGe-F*l&new1 http://blog.scoutap…

Jsp+Servlet+MYSQL注冊登錄案例(界面難看,ε=(′ο`*)))唉)

注冊登錄界面尤為常見&#xff0c;我的界面尤為難看&#xff0c;勉為其難的寫吧&#xff0c;前端不熟就是這樣。。。 這個案例運用到了: 1.Jsp動態頁面--->動態頁面 2.Servlet邏輯判斷后臺---->實現界面與數據庫/業務的連接&#xff0c;簡而言之&#xff0c;起承轉合。PS…

ES6-15 map與set

Promise、Proxy、Map、Set這些ES6新增的api無法用babel實現語法降級&#xff0c;需要使用到polyfill Set 成員是唯一的&#xff0c;不能重復有iterator接口&#xff0c;可迭代具有iterator接口的所有類型&#xff0c;都能作為new Set()的參數&#xff0c;如類數組、數組 con…

jquery --- DOM操作、表單元素的初始化

1.獲取ul里第2個li節點: var $li_two $("ul li:eq(1)"); // 獲取該節點的內容 var $li_two_txt $li_two.text();2.獲取p元素節點的title屬性: var $para $("p"); var p_title $para.attr("title");3.創建2個li節點,并添加道ul中: var $li…

Jquery中post與get之間的區別詳細介紹

1:GET訪問瀏覽器認為是等冪的 GET訪問瀏覽器認為是等冪的&#xff0c;就是一個相同的URL只有一個結果&#xff0c;相同是指整個URL字符串完全匹配。所以&#xff0c;第二次訪問的時候&#xff0c;如果URL字符串沒變化 瀏覽器是直接拿出了第一次訪問的結果&#xff1b; POST則認…

LeetCode 424. Longest Repeating Character Replacement

原題鏈接在這里&#xff1a;https://leetcode.com/problems/longest-repeating-character-replacement/description/ 題目&#xff1a; Given a string that consists of only uppercase English letters, you can replace any letter in the string with another letter at mo…

ES6-16 WeakMap與WeakSet、proxy與reflect

WeakMap/WeakSet 原型上不存在遍歷方法(沒有部署iterator接口)成員只能是對象垃圾回收機制不考慮對成員對象的應用 WeakSet/WeakMap 中的對象都是弱引用&#xff0c;即垃圾回收機制不考慮 WeakSet 對該對象的引用&#xff0c;也就是說&#xff0c;如果其他對象都不再引用該對象…

jquery--- 屬性和樣式的操作 設置和獲取HTML、文本和值、焦點事件

1.獲取p元素的title屬性: var title $("p").attr("title");2.給p元素加title屬性(值為:栗子)和date屬性(值為:2019/7/15): $("p").attr("title":"栗子", "date":"2019/7/15");3.刪除p中的title屬性:…

day9

前方高能---初識函數 一. 什么是函數 函數:對代碼塊和功能的封裝和定義. 二. 函數的定義,函數名,函數體,以及函數的調用 def 函數名(): 函數體 函數體:就是函數被執行之后要執行的代碼. 三, 函數的返回 執行完函數之后,我們可以使用return來返回結果. 函數中return的使用: 1.函…

MySQL 數據庫索引

數據庫索引在數據庫中、索引使數據庫程序無須對整個表進行全表掃描就可以在其中找到所需的數據&#xff1b;數據庫中的索引是某個表中一列或者若干列值的集合、以及物理標識這些值的數據頁的邏輯指針清單&#xff1b;MySQL 索引的增刪查SQL 語句效率的分析索引的作用&#xff1…

ES6-17 class與對象

class 模擬類的方式語法糖&#xff08;把以前的寫法換了一個方式&#xff09; 類內部的方法是不可枚舉的 ES5用Object.assign拓展的原型屬性是可枚舉的 function Point(x, y) {this.x x;this.y y; } // 這樣定義的原型上方法eat\drink是可枚舉的 Point.prototype Object…

8.8 正睿暑期集訓營 Day5

目錄 2018.8.8 正睿暑期集訓營 Day5總結A 友誼巨輪(線段樹 動態開點)B 璀璨光滑C 構解巨樹考試代碼ABC2018.8.8 正睿暑期集訓營 Day5時間&#xff1a;3.5h(實際)期望得分&#xff1a;602020實際得分&#xff1a;202020 比賽鏈接這里也有一些 總結 線段樹&#xff01;&#xff0…

算法 --- 二叉樹的最大深度

思路: 1.二叉樹的深度,等于Max(左子樹最大深度,右子樹最大深度) 1 2.節點不存在時,此時的深度為0 3.當節點存在,左右子樹不存在時(此時為葉子節點) 返回1 /*** Definition for a binary tree node.* function TreeNode(val) {* this.val val;* this.left this.righ…

ES6-18/19 異步的開端-promise

ES6-18異步的開端-promise ES6-19 promise的使用方法和自定義promisify try catch只能捕獲同步異常&#xff0c;不能捕獲異步的 等待所有異步都執行完&#xff0c;打印結果&#xff0c;比較笨拙的方法&#xff0c;在每個異步操作加arr.length 3 && show(arr) Promis…

leetcode35 C++ 4ms 搜索插入位置

class Solution { public:int searchInsert(vector<int>& nums, int target) {for(int i 0;i<nums.size();i){if(nums[i] > target){return i;}}return nums.size()-1;} }; 轉載于:https://www.cnblogs.com/theodoric008/p/9449049.html