Home  >  Article  >  Web Front-end  >  JS regular expression character matching

JS regular expression character matching

hzc
hzcforward
2020-06-09 16:26:544413browse

Regular expression character matching

These are some notes compiled after reading "JavaScript Regular Expressions Mini Book".

Regular expression is a matching pattern, which can match characters and positions.

The following mainly introduces the situation of matching characters. I am also learning the situation of matching positions.

Two types of fuzzy matching:

1. Horizontal fuzzy matching: The length of a regular matchable string is not fixed. The way this is done is by using quantifiers. For example, {m,n} means that the character appears continuously at least m times and at most n times.

For example, /ab{2,5}c/ means matching a string like this: the first character is "a", followed by 2 to 5 characters "b", and finally the character "c" .

For example: (You can try it manually and think about the results you will get)

var regex = /ab{2,5}c/g;
var string = "abc abbc abbbc abbbbc abbbbbc abbbbbbc";
console.log( string.match(regex) );

g is a modifier, which means global matching, that is, finding matching conditions in string in order all strings.

2. Vertical fuzzy matching: A regular matchable string is specific to a certain character. It does not need to be a certain character, and it can have many possibilities. The way it is implemented is to use the character group

such as /a[123]b/ to match such a string: the first character is a, and the second character can be '1', '2', ' Any one of 3', but only one.

Quantifier (repetition)

1. Common abbreviation form:

(1) {m,} means at least m times

(2) {m} means

appears m times (3)? Equivalent to {0,1} means

appears or does not appear (4) Equivalent to {1,} means at least 1 appears Times

(5)* is equivalent to {0,} which means it can appear any number of times, it can not appear or it can be several times

2. Greedy matching and lazy matching

(1) Greedy matching: /\d{2,5}/ means that the number appears 2-5 times in a row and will match as many as possible

var regex = /\d{2,5}/g;
var string = "123 1234 12345 123456";
console.log( string.match(regex) );
// => ["123", "1234", "12345", "12345"]

(2) Lazy matching: /\d{2,5} ?/ means that although 2-5 times are enough, when 2 is enough, no more attempts will be made.

var regex = /\d{2,5}?/g;
var string = "123 1234 12345 123456";
console.log( string.match(regex) );
// => ["12", "12", "34", "12", "34", "12", "34", "56"]

JS regular expression character matching

Character group

1. Range representation:

(1) Use the hyphen "-" to omit the abbreviation, such as [ 123456abcdefGHIJKLM] can be written as [1-6a-fG-M].

(2) Note: If there is a hyphen in the matched string, either put it at the beginning or end, or escape -.

2. Exclude character groups: For example, [^abc] means that a certain character can be anything, but it cannot be a, b, or c. The ^ caret represents negation, and there is also a corresponding range representation.

3. Common abbreviation form:

(1) \d means [0-9]. It is a single digit

(2) \D means [\^0-9]. Any character except numbers.

(3) \w means [0-9a-zA-Z_]. Numbers, uppercase and lowercase letters, and underscores. Also called the word character

(4) \W means [^0-9a-zA-Z_]. Non-word characters

(5) \s represents [ \t\v\n\r\f]. Represents whitespace characters, including spaces, horizontal tabs, vertical tabs, line feeds, carriage returns, and form feeds.

(6) \S means [^ \t\v\n\r\f]. Non-whitespace characters

(7) . means [^\n\r\u2028\u2029]. Wildcard character, representing almost any character. Exceptions include line feeds, carriage returns, line separators, and paragraph separators.

To match any character, use [\d\D], [\w\W], and [ Any one of ^].

Multi-selection branch

A mode can achieve horizontal and vertical fuzzy matching, and the multi-selection branch can support any one of multiple sub-modes.

Specific form: (p1|p2|p3) p1, p2, p3 are sub-patterns.

Please pay attention to the following issue.

var regex = /good|goodbye/g;
var string = "goodbye";
console.log( string.match(regex) );

The result obtained in the above example is "good"

var regex = /goodbye|good/g;
var string = "goodbye";
console.log( string.match(regex) );

The result obtained in this example is "goodbye"

We get the conclusion: the branch structure is also Lazy, that is, when the previous match is matched, the subsequent ones will not be tried again.

Recommended tutorial: "JS Tutorial"

The above is the detailed content of JS regular expression character matching. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:csdn.net. If there is any infringement, please contact admin@php.cn delete
Previous article:js basic knowledgeNext article:js basic knowledge