JavaScript Regular Expression Exercise
JavaScript Regular Expression Exercise
by Masahiko Sakamoto
HTML
<script src="http://code.jquery.com/qunit/qunit-1.15.0.js"></script>
<link rel="stylesheet" href="http://code.jquery.com/qunit/qunit-1.15.0.css">
<h2><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions" target="_blank">JavaScript Regular Expression</a> Exercise with <a href="http://qunitjs.com/" target="_blank">QUnit</a> on jsFiddle</h2>
<div id="qunit"></div>
<div id="qunit-fixture"></div>
JavaScript
// https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_Expressions
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
QUnit.test("RgeExp.(test|exec) and String.match() basic usage tests", function (assert) {
var src = "abcdEfghijk";
var re = new RegExp('def', 'i');
assert.ok(src.match(re), 'String.match(RegExp object) matches');
assert.deepEqual(src.match(re), ['dEf'], 'String.match(RegExp object) returns matched string array');
assert.ok(src.match(/DEF/i), 'String.match(/regexp literal/) matches');
assert.deepEqual(src.match(/DEF/i), ['dEf'], 'String.match(/regexp literal/) returns matched string array');
assert.ok(!(src.match(/xyz/i)), 'String.match(/regexp literal/) failure');
assert.strictEqual(src.match(/xyz/i), null, 'String.match(/regexp literal/) returns null when no match');
assert.deepEqual(re.exec('abcDeFghijk'), ['DeF'], 'RegExp.exec() returns matched string array');
assert.strictEqual(re.exec('xyz'), null, 'RegExp.exec() returns null when nomatch');
assert.strictEqual(re.test('abcdefgh'), true, 'match regexp expression');
assert.strictEqual(re.test('xyz'), false, 'RegExp.test() return false');
});
QUnit.test("RgeExp.exec() and String.match() group match tests", function (assert) {
assert.deepEqual("abc def ghi\nAbc\tdEf GHI".match(/^((abc)\s(def))/igm), ['abc def', "Abc\tdEf"],
'group matches does not have any effects for String.match()');
var re = /^((abc)\s(def))/igm;
var src = "abc def ghi\nAbc\tdEf GHI";
// 1st RegExp.exec()
var matches = re.exec(src);
assert.deepEqual(matches, ['abc def', 'abc def', 'abc', 'def']);
assert.strictEqual(matches.index, 0);
assert.strictEqual(matches.input, src);
assert.strictEqual(matches[0], 'abc def');
assert.strictEqual(matches[1], 'abc def');
assert.strictEqual(matches[2], 'abc');
assert.strictEqual(matches[3], 'def');
assert.strictEqual(matches[4],...