chinadbo / web-front-end

anything about web front end ,with or without
10 stars 0 forks source link

JavaScript正则表达式备忘单 #11

Open chinadbo opened 5 years ago

chinadbo commented 5 years ago

正则表达式或 regex 用于匹配字符串的各个部分。下面是创建的正则表达式的备忘单。

测试正则表达式

const regex = /yes|no|maybe/;

忽略大小写

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

提取数组中的所有匹配项

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

## 匹配特定的数字和字母

- 您还可以使用连字符匹配数字
```javascript
const regexWithLetterAndNumberRange = /[a-z0-9]/ig;
const testString = "Emma19382";
testString.match(regexWithLetterAndNumberRange) // true

匹配单个未知字符

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

## 匹配连续出现零次或多次的字符

- 使用星号 *
```javascript
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

懒惰匹配

testString.match(greedyRexex); // ["catast"] testString.match(lazyRegex); // ["cat"]

## 匹配起始字符串模式

- 要测试字符串开头的字符匹配,请使用插入符号^,但不要使用字符集
```javascript
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

匹配结束字符串模式

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

## 匹配所有字母和数字

- 使用\word速记
```javascript
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

除了字母和数字之外的所有内容

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

## 匹配所有数字

- 您可以使用字符集[0-9],也可以使用速记\d
```javascript
const digitsRegex = /\d/g;
const stringWithDigits = "My cat eats $20.00 worth of food a week.";

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

匹配所有非数字

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

## 匹配空格

- 使用\s匹配空格和回车
```javascript
const sentenceWithWhitespace = "I like cats!"
var spaceRegex = /\s/g;
whiteSpace.match(sentenceWithWhitespace); // [" ", " "]

匹配非空格

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

## 匹配最少的字符数

- 您只能定义最少数量的字符要求 {lowerBound,}
- 这称为数量说明符
```javascript
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

匹配确切数量的字符数

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

## 匹配全部或不匹配的字符

- 要检查字符是否存在,请使用 ?
```javascript
const britishSpelling = "colour";
const americanSpelling = "Color";
const languageRegex = /colou?r/i;

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