题目来自https://regexone.com

1 正则习题练习

1.1 Exercise 1: Matching Characters

1
2
3
4
var reg = /[a-z]*/;
console.log(reg.exec('abcdefg')); //abcdefg
console.log(reg.exec('abcde')); //abcde
console.log(reg.exec('abc')); //abc

1.2 Exercise 2: Matching Digits

1
2
3
4
var reg = /123/;
console.log(reg.exec('abc123xyz')); //123
console.log(reg.exec('define "123"')); //123
console.log(reg.exec('var g = 123;')); //123

1.3 Exercise 3: Matching With Wildcards

1
2
3
4
5
var reg = /...\./;
console.log(reg.test('cat')); //true
console.log(reg.test(896)); //true
console.log(reg.test('?=+')); //true
console.log(reg.test('abc1')); //false

1.4 Exercise 4: Matching Characters

1
2
3
4
5
6
7
8
var reg = /[cmf]an/;
console.log(reg.test('can')); //true
console.log(reg.test('man')); //true
console.log(reg.test('fan')); //true

console.log(reg.test('dan')); //false
console.log(reg.test('ran')); //false
console.log(reg.test('pan')); //false

1.5 Exercise 5: Excluding Characters

1
2
3
4
5
var reg = /[^b]og/;

console.log(reg.test('hog')); //true
console.log(reg.test('dog')); //true
console.log(reg.test('bog')); //false

1.6 Exercise 6: Matching Character Ranges

1
2
3
4
5
6
7
8
var reg = /[A-C][n-p][a-c]/;

console.log(reg.test('Ana')); //true
console.log(reg.test('Bob')); //true
console.log(reg.test('Cpc')); //true
console.log(reg.test('aax')); //false
console.log(reg.test('bby')); //false
console.log(reg.test('ccz')); //false

1.7 Exercise 7: Matching Repeated Characters

1
2
3
4
5
var reg = /waz{3,5}up/;

console.log(reg.test('wazzzzzup')); //true
console.log(reg.test('wazzzup')); //true
console.log(reg.test('wazup')); //false

1.8 Exercise 8: Matching Repeated Characters

1
2
3
4
5
6
var reg = /a{2,4}b{0,4}c{1,2}/;

console.log(reg.test('aaaabcc')); //true
console.log(reg.test('aabbbbc')); //true
console.log(reg.test('aacc')); //true
console.log(reg.test('a')); //false

1.9 Exercise 9: Matching Optional Characters

1
2
3
4
5
6
var reg = /\d+ files? found\?/;

console.log(reg.test('1 file found?')); //true
console.log(reg.test('2 files found?')); //true
console.log(reg.test('24 files found?')); //true
console.log(reg.test('No files found.')); //false

1.10 Exercise 10: Matching Whitespaces

1
2
3
4
5
6
var reg = /\d\.\s+abc/;

console.log(reg.test('1.   abc')); //true
console.log(reg.test('2.	abc')); //true
console.log(reg.test('3.           abc')); //true
console.log(reg.test('4.abc')); //false

1.11 Exercise 11: Matching Lines

1
2
3
4
5
var reg = /^Mission: successful$/;

console.log(reg.test('Mission: successful')); //true
console.log(reg.test('Last Mission: unsuccessful')); //false
console.log(reg.test('Next Mission: successful upon capture of target')); //false

1.12 Exercise 12: Matching Groups

1
2
3
4
5
var reg = /^(file.+)\.pdf$/;

console.log(reg.exec('file_record_transcript.pdf')[1]); //file_record_transcript
console.log(reg.exec('file_07241999.pdf')[1]); //file_07241999
console.log(reg.exec('testfile_fake.pdf.tmp')); //null

1.13 Exercise 13: Matching Nested Groups

1
2
3
4
5
var reg = /(\S+\s(\d+))/;

console.log(reg.exec('Jan 1987')); //Jan 1987, 1987
console.log(reg.exec('May 1969')); //May 1969, 1969
console.log(reg.exec('Aug 2011')); //Aug 2011, 2011

1.14 Exercise 14: Matching Nested Groups

1
2
3
4
5
var reg = /(\d+)x(\d+)/;

console.log(reg.exec('1280x720')); //1280, 720
console.log(reg.exec('1920x1600')); //1920, 1600
console.log(reg.exec('1024x768')); //1024, 768

1.15 Exercise 15: Matching Conditional Text

1
2
3
4
5
6
var reg = /I love (cats|dogs)/;

console.log(reg.test('I love cats')); //true
console.log(reg.test('I love dogs')); //true
console.log(reg.test('I love logs')); //false
console.log(reg.test('I love cogs')); //false

1.16 Exercise 16: Matching Other Special Characters

1
2
3
4
5
var reg = /.*/;

console.log(reg.test('The quick brown fox jumps over the lazy dog.')); //true
console.log(reg.test('There were 614 instances of students getting 90.0% or above.')); //true
console.log(reg.test('The FCC had to censor the network for saying &$#*@!.')); //true