From a53a7273d79aa8aedb8ef525cbb6ea55c8394e80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=93=E8=81=AA?= <469376974@qq.com> Date: Thu, 4 Apr 2019 16:24:30 +0800 Subject: [PATCH] finish commit --- lib/anchor_end.js | 4 +- lib/anchor_start.js | 4 +- lib/char_class.js | 4 +- lib/negated_char_class.js | 4 +- package-lock.json | 280 ++++++++++++++++++++++++++++++++++++++ test/test.js | 248 ++++++++++++++++----------------- 6 files changed, 416 insertions(+), 128 deletions(-) create mode 100644 package-lock.json diff --git a/lib/anchor_end.js b/lib/anchor_end.js index 56e8b85..e70ad0e 100644 --- a/lib/anchor_end.js +++ b/lib/anchor_end.js @@ -1,3 +1,5 @@ module.exports = function (str) { - // TOOD + // TODO + let reg = /.?BANANAS$/ + return reg.test(str) } \ No newline at end of file diff --git a/lib/anchor_start.js b/lib/anchor_start.js index 56e8b85..cd87328 100644 --- a/lib/anchor_start.js +++ b/lib/anchor_start.js @@ -1,3 +1,5 @@ module.exports = function (str) { - // TOOD + // TODO + let reg = /^LITERALLY\s?\w?/ + return reg.test(str) } \ No newline at end of file diff --git a/lib/char_class.js b/lib/char_class.js index a08ee57..f1c2178 100644 --- a/lib/char_class.js +++ b/lib/char_class.js @@ -1,3 +1,5 @@ module.exports = function (str) { - // TODO + // TODO + let reg = /^[auo14]/ + return reg.test(str) } \ No newline at end of file diff --git a/lib/negated_char_class.js b/lib/negated_char_class.js index a08ee57..7cd5861 100644 --- a/lib/negated_char_class.js +++ b/lib/negated_char_class.js @@ -1,3 +1,5 @@ module.exports = function (str) { - // TODO + // TODO + let reg = /^\D{1}[^A-Z]{1}.?/ + return reg.test(str) } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..910db08 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,280 @@ +{ + "name": "exercise5", + "version": "0.0.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "balanced-match": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "http://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz", + "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "browser-stdout": { + "version": "1.3.0", + "resolved": "http://registry.npm.taobao.org/browser-stdout/download/browser-stdout-1.3.0.tgz", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "dev": true + }, + "commander": { + "version": "2.9.0", + "resolved": "http://registry.npm.taobao.org/commander/download/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true, + "requires": { + "graceful-readlink": ">= 1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "http://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "debug": { + "version": "2.6.8", + "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "diff": { + "version": "3.2.0", + "resolved": "http://registry.npm.taobao.org/diff/download/diff-3.2.0.tgz", + "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "http://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "glob": { + "version": "7.1.1", + "resolved": "http://registry.npm.taobao.org/glob/download/glob-7.1.1.tgz", + "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/graceful-readlink/download/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "growl": { + "version": "1.9.2", + "resolved": "http://registry.npm.taobao.org/growl/download/growl-1.9.2.tgz", + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", + "dev": true + }, + "has-flag": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/has-flag/download/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "he": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/he/download/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "http://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "http://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "json3": { + "version": "3.3.2", + "resolved": "http://registry.npm.taobao.org/json3/download/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "lodash._baseassign": { + "version": "3.2.0", + "resolved": "http://registry.npm.taobao.org/lodash._baseassign/download/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "dev": true, + "requires": { + "lodash._basecopy": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "http://registry.npm.taobao.org/lodash._basecopy/download/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._basecreate": { + "version": "3.0.3", + "resolved": "http://registry.npm.taobao.org/lodash._basecreate/download/lodash._basecreate-3.0.3.tgz", + "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "http://registry.npm.taobao.org/lodash._getnative/download/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "http://registry.npm.taobao.org/lodash._isiterateecall/download/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash.create": { + "version": "3.1.1", + "resolved": "http://registry.npm.taobao.org/lodash.create/download/lodash.create-3.1.1.tgz", + "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", + "dev": true, + "requires": { + "lodash._baseassign": "^3.0.0", + "lodash._basecreate": "^3.0.0", + "lodash._isiterateecall": "^3.0.0" + } + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "http://registry.npm.taobao.org/lodash.isarguments/download/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "http://registry.npm.taobao.org/lodash.isarray/download/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "http://registry.npm.taobao.org/lodash.keys/download/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, + "requires": { + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "http://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "http://registry.npm.taobao.org/minimist/download/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "http://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "3.5.3", + "resolved": "http://registry.npm.taobao.org/mocha/download/mocha-3.5.3.tgz?cache=0&other_urls=http%3A%2F%2Fregistry.npm.taobao.org%2Fmocha%2Fdownload%2Fmocha-3.5.3.tgz", + "integrity": "sha1-HgSA/jbS2lhY0etqzDhBiybqog0=", + "dev": true, + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.9.0", + "debug": "2.6.8", + "diff": "3.2.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.1", + "growl": "1.9.2", + "he": "1.1.1", + "json3": "3.3.2", + "lodash.create": "3.1.1", + "mkdirp": "0.5.1", + "supports-color": "3.1.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "http://registry.npm.taobao.org/once/download/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "supports-color": { + "version": "3.1.2", + "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-3.1.2.tgz", + "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } + } +} diff --git a/test/test.js b/test/test.js index 4935e28..bf32283 100644 --- a/test/test.js +++ b/test/test.js @@ -1,132 +1,132 @@ const assert = require('assert') describe('regex', function () { - it('可匹配 LITERALLY 开始', function () { - const anchor_start = require('../lib/anchor_start') - assert.ok( - anchor_start(`LITERALLY CAN'T EVEN`), - `LITERALLY CAN'T EVEN` - ) - assert.ok( - !anchor_start(`FIGURATIVELY can't even`), - `FIGURATIVELY can't even` - ) - assert.ok( - !anchor_start(`I am LITERALLY on a roll down a hill right now`), - `I am LITERALLY on a roll down a hill right now` - ) - assert.ok( - !anchor_start(`literaturely`), - `literaturely` - ) - assert.ok( - !anchor_start(`litERALLY whatever`), - `litERALLY whatever` - ) - assert.ok( - anchor_start(`LITERALLY WHATEVER`), - `LITERALLY WHATEVER` - ) - }) + it('可匹配 LITERALLY 开始', function () { + const anchor_start = require('../lib/anchor_start') + assert.ok( + anchor_start(`LITERALLY CAN'T EVEN`), + `LITERALLY CAN'T EVEN` + ) + assert.ok( + !anchor_start(`FIGURATIVELY can't even`), + `FIGURATIVELY can't even` + ) + assert.ok( + !anchor_start(`I am LITERALLY on a roll down a hill right now`), + `I am LITERALLY on a roll down a hill right now` + ) + assert.ok( + !anchor_start(`literaturely`), + `literaturely` + ) + assert.ok( + !anchor_start(`litERALLY whatever`), + `litERALLY whatever` + ) + assert.ok( + anchor_start(`LITERALLY WHATEVER`), + `LITERALLY WHATEVER` + ) + }) - it('可匹配 BANANAS 结束', function () { - const anchor_end = require('../lib/anchor_end') + it('可匹配 BANANAS 结束', function () { + const anchor_end = require('../lib/anchor_end') - assert.ok( - anchor_end(`THIS SHIITAKE IS BANANAS`), - `THIS SHIITAKE IS BANANAS` - ) - assert.ok( - anchor_end(`BANANAS`), - `BANANAS` - ) - assert.ok( - !anchor_end(`BANANAS ARE GREEN OR YELLOW`), - `BANANAS ARE GREEN OR YELLOW` - ) - assert.ok( - !anchor_end(`NOTHING`), - `NOTHING` - ) - assert.ok( - !anchor_end(`EVERYTHING IS BANANAS.`), - `EVERYTHING IS BANANAS.` - ) - assert.ok( - anchor_end(`EVERYTHING IS BANANAS`), - `EVERYTHING IS BANANAS` - ) - }) + assert.ok( + anchor_end(`THIS SHIITAKE IS BANANAS`), + `THIS SHIITAKE IS BANANAS` + ) + assert.ok( + anchor_end(`BANANAS`), + `BANANAS` + ) + assert.ok( + !anchor_end(`BANANAS ARE GREEN OR YELLOW`), + `BANANAS ARE GREEN OR YELLOW` + ) + assert.ok( + !anchor_end(`NOTHING`), + `NOTHING` + ) + assert.ok( + !anchor_end(`EVERYTHING IS BANANAS.`), + `EVERYTHING IS BANANAS.` + ) + assert.ok( + anchor_end(`EVERYTHING IS BANANAS`), + `EVERYTHING IS BANANAS` + ) + }) - it('首字母必须满足下面条件', function () { - const char_class = require('../lib/char_class') - assert.ok( - char_class(`az`), - `az` - ) - assert.ok( - !char_class(`babbage`), - `babbage` - ) - assert.ok( - !char_class(`AAA`), - `AAA` - ) - assert.ok( - char_class(`123`), - `123` - ) - assert.ok( - char_class(`abc123`), - `abc123` - ) - assert.ok( - !char_class(`Q1`), - `Q1` - ) - assert.ok( - char_class(`under`), - `under` - ) - assert.ok( - char_class(`404x`), - `404x` - ) - assert.ok( - char_class(`obelisk`), - `obelisk` - ) - }) + it('首字母必须满足下面条件', function () { + const char_class = require('../lib/char_class') + assert.ok( + char_class(`az`), + `az` + ) + assert.ok( + !char_class(`babbage`), + `babbage` + ) + assert.ok( + !char_class(`AAA`), + `AAA` + ) + assert.ok( + char_class(`123`), + `123` + ) + assert.ok( + char_class(`abc123`), + `abc123` + ) + assert.ok( + !char_class(`Q1`), + `Q1` + ) + assert.ok( + char_class(`under`), + `under` + ) + assert.ok( + char_class(`404x`), + `404x` + ) + assert.ok( + char_class(`obelisk`), + `obelisk` + ) + }) - it('匹配开头非数字,第二个字符非大写字母', function () { - const negated_char_class = require('../lib/negated_char_class') - assert.ok( - !negated_char_class(`1A`), - `1A` - ) - assert.ok( - negated_char_class(`A1`), - `A1` - ) - assert.ok( - !negated_char_class(`ABC`), - `ABC` - ) - assert.ok( - negated_char_class(`abc`), - `abc` - ) - assert.ok( - !negated_char_class(`555`), - `555` - ) - assert.ok( - !negated_char_class(`5z`), - `5z` - ) - assert.ok( - negated_char_class(`...`), - `...` - ) - }) + it('匹配开头非数字,第二个字符非大写字母', function () { + const negated_char_class = require('../lib/negated_char_class') + assert.ok( + !negated_char_class(`1A`), + `1A` + ) + assert.ok( + negated_char_class(`A1`), + `A1` + ) + assert.ok( + !negated_char_class(`ABC`), + `ABC` + ) + assert.ok( + negated_char_class(`abc`), + `abc` + ) + assert.ok( + !negated_char_class(`555`), + `555` + ) + assert.ok( + !negated_char_class(`5z`), + `5z` + ) + assert.ok( + negated_char_class(`...`), + `...` + ) + }) }) \ No newline at end of file