Home  >  Article  >  Web Front-end  >  Explanation of the difference between js regular expression exec and match_javascript skills

Explanation of the difference between js regular expression exec and match_javascript skills

WBOY
WBOYOriginal
2016-05-16 17:01:43941browse

JS regular expressions were rarely used in the past when using JS. Even if they were used, they were used to judge things like email names. There are many codes on the Internet and little research. They can be used immediately.

Recently, I have encountered some problems that require the use of regular expressions. Let’s study them by the way

Regular expression objects are defined in two ways:

1. The first definition:

new RegExp(pattern, attributes); such as var reg = new RegExp("abc","g")

Pattern represents the expression content, as shown above, it matches abc

Attributes: g, global matching, i is not case-sensitive, m performs multi-line matching, the most commonly used ones are g and i

2. The second definition:/pattern/attributes.

For example: var reg = /abc/g;

Some rules of regular expression are not explained here. Only the difference between exec and match is recorded:

1. exec is a regular expression method, not a string method. Its parameter is a string, as shown below:

As defined above
var reg = new RegExp("abc");
var str = "3abc4, 5abc6";
reg.exec(str);

2. Match is a method for strings to execute matching regular expression rules. Its parameters are regular expressions, such as

var reg = new RegExp("abc") ;
var str = "3abc4,5abc6";
str.match(reg);

3. exec and match return arrays;

If the regular expression executed by exec has no subexpression (the content within parentheses, such as (s*) in /abc(s*)/), if there is a match, the first matching string will be returned Content, the array at this time has only one element, if there is no match, null is returned;

var reg = new RegExp("abc") ;
var str = "3abc4,5abc6";
alert(reg.exec(str));
alert(str.match(reg) );

Execute the above code, you will find that the contents of both are the same: abc,

4. If you define the regular expression object as global matching, such as:

var reg = new RegExp("abc","g") ;
var str = "3abc4,5abc6";
alert(reg.exec(str));
alert(str. match(reg));

is abc and abc, abc; because match executes a global matching query; and exec will only find a matching one and return it if there is no subexpression.

5. When the expression contains subexpressions:

var reg = new RegExp("a(bc)") ;
var str = "3abc4,5abc6";
alert(reg.exec(str));
alert(str.match (reg));

You will find that the results of both executions are: abc, bc;

6. When the if regular expression object is defined as a global match

var reg = new RegExp("a(bc)","g") ;
var str = "3abc4,5abc6";
alert(reg.exec(str));
alert (str.match(reg));

The results returned by the two are abc,bc and abc,abc,

is summarized as:

1. When the regular expression has no subexpression and is defined as a non-global match, the execution results of exec and match are the same, and both return the first matched string content;

2. When the regular expression has no subexpression and is defined as a global match, exec and match are executed, and if there are multiple matching contents, match returns an array of multiple elements;

3. When the regular expression has sub-representations and is defined as a non-global match, the execution results of exec and match are the same as in the 5th case above;

4. When the regular expression has sub-expressions and is defined as a global match, the execution results of exec and match are different. At this time, match will ignore the sub-expression and only search for the full matching regular expression and return all contents. As in case 6 above;

In other words, exec has nothing to do with whether the global is defined, while match is related to the global. When defined as non-global, the execution results of the two are the same

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn