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],...