2017年5月4日木曜日

開発環境

Think Perl 6: How to Think Like a Computer Scientist (Laurent Rosenfeld(著)、Allen B. Downey(著)、Oreilly & Associates Inc)の Part 1(Starting with the basics)、Chapter 7(Strings)、Building, your Regex Patterns の Exercises on Regexes.を JavaScript で取り組んでみる。

Exercises on Regexes.

コード(Emacs)

HTML5

<pre id="output0"></pre>
<button id="run0">run</button>
<button id="clear0">clear</button>

<script src="sample_regexes.js"></script>

JavaScript

let btn0 = document.querySelector('#run0'),
    btn1 = document.querySelector('#clear0'),
    pre0 = document.querySelector('#output0'),
    p = (x) => pre0.textContent += x + '\n';

let output = () => {
    p('10 digits');
    let regex = /\d{10}/;
    p(regex.exec('a1234567890bc')[0]);
    p(regex.exec('a123456789bc'));
    
    p('valid octal number');
    regex = /^[0-7]+$/;
    p(regex.exec(''));
    p(regex.exec('0')[0]);
    p(regex.exec('01234567')[0]);
    p(regex.exec('012345678'));

    p('first word');
    regex = /\w+/;
    p(regex.exec('think perl 6')[0]);
    p(regex.exec('think')[0]);
    
    p('first word(starting with an "a")');
    regex = /\ba\w*/;
    p(regex.exec('b'));
    p(regex.exec('like alike')[0]);
    p(regex.exec('alike like')[0]);

    p('first word(starting with a lowercase vowel)');
    regex = /\b[aeiou]\w*/;
    p(regex.exec('b'));
    p(regex.exec('e')[0]);
    p(regex.exec('a e')[0]);
    p(regex.exec('b e')[0]);
    p(regex.exec('epub')[0]);
    p(regex.exec('book epub')[0]);

    p('French mobile telephone nuber.');
    regex = /^0[67]\d{8}$/;
    p(regex.exec('0612345678')[0]);
    p(regex.exec('061234567'));
    p(regex.exec('06123456789'));

    p('first word(starting with a vowel)');
    regex = /\b[aeiou]\w*/i;
    p(regex.exec('b'));
    p(regex.exec('e')[0]);
    p(regex.exec('a e')[0]);
    p(regex.exec('b e')[0]);
    p(regex.exec('epub')[0]);
    p(regex.exec('book epub')[0]);

    p(regex.exec('B'));
    p(regex.exec('E')[0]);
    p(regex.exec('A E')[0]);
    p(regex.exec('B E')[0]);
    p(regex.exec('Epub')[0]);
    p(regex.exec('BOOK EPUB')[0]);

    p('second occurence of a double letter');
    regex = /(\w)\1.*((\w)\3)/;
    p(regex.exec('aa bb')[2]);
    p(regex.exec('aa bbb')[2]);
    p(regex.exec('aaa bbb')[2]);
    p(regex.exec('aa b'));
};

btn0.onclick = output;
btn1.onclick = () => pre0.textContent = '';

output();













						

0 コメント:

コメントを投稿