diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/lib/blink.js b/lib/blink.js
index c391a9f..e3a9ecf 100644
--- a/lib/blink.js
+++ b/lib/blink.js
@@ -1,7 +1,7 @@
var marked = require('marked')
module.exports = function (str) {
- var md = marked(str)
- // TODO
- return null
+ var md = marked(str)
+ // TODO
+ return md.replace(/@@([\w\W]+?)\@@/g, ``);
}
\ No newline at end of file
diff --git a/lib/capture.js b/lib/capture.js
index a08ee57..ade6d7f 100644
--- a/lib/capture.js
+++ b/lib/capture.js
@@ -1,3 +1,9 @@
module.exports = function (str) {
- // TODO
+ // TODO
+ let res;
+
+ res = str.match(/x=(\d+)/);
+ // console.log(res)
+ res = res && res[1] || null;
+ return res;
}
\ No newline at end of file
diff --git a/lib/capture_breakword.js b/lib/capture_breakword.js
index a08ee57..1d766ce 100644
--- a/lib/capture_breakword.js
+++ b/lib/capture_breakword.js
@@ -1,3 +1,9 @@
module.exports = function (str) {
- // TODO
+ // TODO
+ let res;
+ res = str.match(/\bx=(\d+)\b/);
+ // console.log(res)
+ res = res && res[1] || null;
+ return res;
+
}
\ No newline at end of file
diff --git a/lib/quantified_group.js b/lib/quantified_group.js
index a08ee57..3afb5a8 100644
--- a/lib/quantified_group.js
+++ b/lib/quantified_group.js
@@ -1,3 +1,4 @@
module.exports = function (str) {
- // TODO
+ // TODO
+ return /^(0x[a-fA-F\d]{2}\s*){8}$/.test(str);
}
\ No newline at end of file
diff --git a/lib/quotes.js b/lib/quotes.js
index a08ee57..fb1c9d5 100644
--- a/lib/quotes.js
+++ b/lib/quotes.js
@@ -1,3 +1,8 @@
module.exports = function (str) {
- // TODO
+ // TODO
+ let res;
+
+ res = str.match(/".*?"/g);
+ // console.log(res)
+ return res;
}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..8afcc7f
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,286 @@
+{
+ "name": "exercise7",
+ "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"
+ }
+ },
+ "marked": {
+ "version": "0.3.19",
+ "resolved": "http://registry.npm.taobao.org/marked/download/marked-0.3.19.tgz",
+ "integrity": "sha1-XUf3CcTJ/Dwha21GEnKA9As515A=",
+ "dev": true
+ },
+ "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",
+ "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 0bcfdc7..b1f6048 100644
--- a/test/test.js
+++ b/test/test.js
@@ -1,94 +1,94 @@
const assert = require('assert')
describe('regex', function () {
- it('可以捕获正整数 x 的值', function () {
- const f = require('../lib/capture')
+ it('可以捕获正整数 x 的值', function () {
+ const f = require('../lib/capture')
- assert.equal(f('x=5'), '5', 'x=5')
- assert.equal(f('abc x=5'), '5', 'abc x=5')
- assert.equal(f('x=abc'), null, 'x=abc')
- assert.equal(f('beep x=123123 boop'), '123123', 'beep x=123123 boop')
- })
+ assert.equal(f('x=5'), '5', 'x=5')
+ assert.equal(f('abc x=5'), '5', 'abc x=5')
+ assert.equal(f('x=abc'), null, 'x=abc')
+ assert.equal(f('beep x=123123 boop'), '123123', 'beep x=123123 boop')
+ })
- it('可以捕获正整数 x 的值,末尾带有 x 的变量不应当被捕获', function () {
- const f = require('../lib/capture_breakword')
+ it('可以捕获正整数 x 的值,末尾带有 x 的变量不应当被捕获', function () {
+ const f = require('../lib/capture_breakword')
- assert.equal(f('x=5'), '5', 'x=5')
- assert.equal(f('abc x=5'), '5', 'abc x=5')
- assert.equal(f('fox=123'), null, 'fox=123')
- assert.equal(f('x=abc'), null, 'x=abc')
- assert.equal(f('x=33qrs'), null, 'x=33qrs')
- assert.equal(f('3x=33'), null, '3x=33')
- assert.equal(f('beep x=123123 boop'), '123123', 'beep x=123123 boop')
- })
+ assert.equal(f('x=5'), '5', 'x=5')
+ assert.equal(f('abc x=5'), '5', 'abc x=5')
+ assert.equal(f('fox=123'), null, 'fox=123')
+ assert.equal(f('x=abc'), null, 'x=abc')
+ assert.equal(f('x=33qrs'), null, 'x=33qrs')
+ assert.equal(f('3x=33'), null, '3x=33')
+ assert.equal(f('beep x=123123 boop'), '123123', 'beep x=123123 boop')
+ })
- it(`匹配8位 hex 代码,以'0x'开头,后面跟着两个字符可以是大写'A-F',小写'a-f',或者任意数字`, function () {
- const f = require('../lib/quantified_group')
+ it(`匹配8位 hex 代码,以'0x'开头,后面跟着两个字符可以是大写'A-F',小写'a-f',或者任意数字`, function () {
+ const f = require('../lib/quantified_group')
- assert.ok(
- f('0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF\n'),
- '0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF\\n'
- )
- assert.ok(
- f('0x00\n0x11\n0x22\n0x33\n0x44\n0x55\n0x66\n0x77\n'),
- '0x00\\n0x11\\n0x22\\n0x33\\n0x44\\n0x55\\n0x66\\n0x77'
- )
- assert.ok(
- f('0x0f 0x1f 0x2f 0x3f 0x4f 0x5f 0x6f 0x7f\n'),
- '0x0f 0x1f 0x2f 0x3f 0x4f 0x5f 0x6f 0x7f\\n'
- )
- assert.ok(
- f('0xE2 0xC3 0xB3 0xD0 0x44 0x9E 0x6F 0x7F\n'),
- '0xE2 0xC3 0xB3 0xD0 0x44 0x9E 0x6F 0x7F\\n'
- )
- assert.ok(
- !f('0xE2 0xC3 0xB3 0xD0 0x44 0x9E 0x6F\n'),
- '0xE2 0xC3 0xB3 0xD0 0x44 0x9E 0x6F\n'
- )
- assert.ok(
- !f('0xE2 0xC3 0xB3 0xD0 0x44 0x9E 0x6F 0xff 0xff\n'),
- '0xE2 0xC3 0xB3 0xD0 0x44 0x9E 0x6F 0xff 0xff\n'
- )
- })
+ assert.ok(
+ f('0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF\n'),
+ '0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF\\n'
+ )
+ assert.ok(
+ f('0x00\n0x11\n0x22\n0x33\n0x44\n0x55\n0x66\n0x77\n'),
+ '0x00\\n0x11\\n0x22\\n0x33\\n0x44\\n0x55\\n0x66\\n0x77'
+ )
+ assert.ok(
+ f('0x0f 0x1f 0x2f 0x3f 0x4f 0x5f 0x6f 0x7f\n'),
+ '0x0f 0x1f 0x2f 0x3f 0x4f 0x5f 0x6f 0x7f\\n'
+ )
+ assert.ok(
+ f('0xE2 0xC3 0xB3 0xD0 0x44 0x9E 0x6F 0x7F\n'),
+ '0xE2 0xC3 0xB3 0xD0 0x44 0x9E 0x6F 0x7F\\n'
+ )
+ assert.ok(
+ !f('0xE2 0xC3 0xB3 0xD0 0x44 0x9E 0x6F\n'),
+ '0xE2 0xC3 0xB3 0xD0 0x44 0x9E 0x6F\n'
+ )
+ assert.ok(
+ !f('0xE2 0xC3 0xB3 0xD0 0x44 0x9E 0x6F 0xff 0xff\n'),
+ '0xE2 0xC3 0xB3 0xD0 0x44 0x9E 0x6F 0xff 0xff\n'
+ )
+ })
- it('匹配所有引号', function () {
- const f = require('../lib/quotes')
- assert.deepEqual(
- f('one "two three four" five six "seven eight" nine'),
- ['"two three four"','"seven eight"'],
- 'one "two three four" five six "seven eight" nine'
- )
- assert.deepEqual(
- f('"beep boop" whatever "tacos" eleven "eighty"'),
- ['"beep boop"','"tacos"','"eighty"'],
- '"beep boop" whatever "tacos" eleven "eighty"'
- )
- assert.deepEqual(f('empty ""'), ['""'], 'empty ""')
- })
+ it('匹配所有引号', function () {
+ const f = require('../lib/quotes')
+ assert.deepEqual(
+ f('one "two three four" five six "seven eight" nine'),
+ ['"two three four"','"seven eight"'],
+ 'one "two three four" five six "seven eight" nine'
+ )
+ assert.deepEqual(
+ f('"beep boop" whatever "tacos" eleven "eighty"'),
+ ['"beep boop"','"tacos"','"eighty"'],
+ '"beep boop" whatever "tacos" eleven "eighty"'
+ )
+ assert.deepEqual(f('empty ""'), ['""'], 'empty ""')
+ })
- it(`将'@@...@@'markdown语法变成''`, function () {
- const f = require('../lib/blink')
-
- assert.equal(
- f('@@whatever@@').trim(),
- '
',
- '@@whatever@@'
- )
- assert.equal(
- f('*abc* @@def@@ __ghi__').trim(),
- 'abc ghi
',
- '*abc* @@def@@ __ghi__'
- )
- assert.equal(
- f('@@**cool**@@').trim(),
- '',
- '@@**cool**@@'
- )
- assert.equal(
- f('beep @@boop@@ says *the* @@**robot**@@!').trim(),
- 'beep says the'
- + ' !
',
- 'beep @@boop@@ says *the* @@**robot**@@!'
- )
- })
+ it(`将'@@...@@'markdown语法变成''`, function () {
+ const f = require('../lib/blink')
+
+ assert.equal(
+ f('@@whatever@@').trim(),
+ '',
+ '@@whatever@@'
+ )
+ assert.equal(
+ f('*abc* @@def@@ __ghi__').trim(),
+ 'abc ghi
',
+ '*abc* @@def@@ __ghi__'
+ )
+ assert.equal(
+ f('@@**cool**@@').trim(),
+ '',
+ '@@**cool**@@'
+ )
+ assert.equal(
+ f('beep @@boop@@ says *the* @@**robot**@@!').trim(),
+ 'beep says the'
+ + ' !
',
+ 'beep @@boop@@ says *the* @@**robot**@@!'
+ )
+ })
})
\ No newline at end of file