Skip to content
This repository was archived by the owner on Oct 20, 2021. It is now read-only.

Commit 21bc8e8

Browse files
feat(rules): Added Alnum rule
1 parent a674c92 commit 21bc8e8

6 files changed

Lines changed: 113 additions & 3 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ The library can be loaded either as a standalone script, or through an [AMD](htt
7979

8080
- [Age](docs/age.md)
8181
- [AllOf](docs/all-of.md)
82+
- [Alnum](docs/alnum.md)
8283
- [Alpha](docs/alpha.md)
8384
- [AlwaysInvalid](docs/always-invalid.md)
8485
- [AlwaysValid](docs/always-valid.md)

awesome-validator.min.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/alnum.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Alnum
2+
3+
Validates if the given input is alphanumeric.
4+
5+
Valid values:
6+
7+
```js
8+
validator.alnum().validate('alganet');
9+
validator.alnum().validate('abc 123');
10+
validator.alnum().validate('\t');
11+
validator.alnum().validate('\n');
12+
```
13+
14+
Invalid values:
15+
16+
```js
17+
validator.alnum().validate('');
18+
validator.alnum().validate('16-50');
19+
validator.alnum().validate('@#$');
20+
validator.alnum().validate('_');
21+
```

src/rules/alnum.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { AbstractRegexFilter } from './abstract-regex-filter';
2+
3+
export class Alnum extends AbstractRegexFilter {
4+
5+
/**
6+
* Filter white sapce.
7+
*/
8+
protected filterWhiteSpace(): boolean {
9+
return true;
10+
}
11+
12+
/**
13+
* Get pattern.
14+
*/
15+
protected getPattern(): string | RegExp {
16+
return /^[a-z\d]+$/gi;
17+
}
18+
}

src/rules/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
export * from './age';
22
export * from './all-of';
3+
export * from './alnum';
34
export * from './alpha';
45
export * from './always-invalid';
56
export * from './always-valid';

test/rules/alnum.ts

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import { assert } from 'chai';
2+
3+
import { AbstractRule } from '../../src/rules/abstract-rule';
4+
import { Alnum } from '../../src/rules/alnum';
5+
6+
describe('Alnum', () => {
7+
8+
let alnum: Alnum;
9+
10+
beforeEach(() => {
11+
alnum = new Alnum();
12+
});
13+
14+
it('is rule', () => {
15+
assert.instanceOf(alnum, AbstractRule);
16+
});
17+
18+
it('values is valid with additional characters', () => {
19+
assert.isTrue(new Alnum('!@#$%^&*(){}').validate('!@#$%^&*(){} abc 123'));
20+
assert.isTrue(new Alnum('[]?+=/\\-_|"\',<>.').validate('[]?+=/\\-_|"\',<>. \t \n abc 123'));
21+
assert.isTrue(new Alnum(undefined).validate('abc 123'));
22+
});
23+
24+
it('values is valid', () => {
25+
assert.isTrue(alnum.validate('alganet'));
26+
assert.isTrue(alnum.validate('a'));
27+
assert.isTrue(alnum.validate('1'));
28+
assert.isTrue(alnum.validate('\t'));
29+
assert.isTrue(alnum.validate('\n'));
30+
assert.isTrue(alnum.validate('foobar'));
31+
assert.isTrue(alnum.validate('Foo'));
32+
assert.isTrue(alnum.validate('alganet alganet'));
33+
assert.isTrue(alnum.validate('\nabc'));
34+
assert.isTrue(alnum.validate('\tdef'));
35+
assert.isTrue(alnum.validate('\nabc \t'));
36+
assert.isTrue(alnum.validate(0));
37+
});
38+
39+
it('values is not valid', () => {
40+
assert.isFalse(alnum.validate(''));
41+
assert.isFalse(alnum.validate('16-50'));
42+
assert.isFalse(alnum.validate('@#$'));
43+
assert.isFalse(alnum.validate('_'));
44+
assert.isFalse(alnum.validate('dgç'));
45+
assert.isFalse(alnum.validate('12.1'));
46+
assert.isFalse(alnum.validate('-12'));
47+
assert.isFalse(alnum.validate(-50));
48+
assert.isFalse(alnum.validate(String()));
49+
assert.isFalse(alnum.validate(null));
50+
assert.isFalse(alnum.validate(undefined));
51+
assert.isFalse(alnum.validate('-1.1'));
52+
assert.isFalse(alnum.validate('1.1'));
53+
assert.isFalse(alnum.validate('-1'));
54+
assert.isFalse(alnum.validate(-1));
55+
assert.isFalse(alnum.validate(-1.0));
56+
assert.isFalse(alnum.validate(0.1));
57+
assert.isFalse(alnum.validate(-0.1));
58+
assert.isFalse(alnum.validate(1.1));
59+
assert.isFalse(alnum.validate(-1.1));
60+
assert.isFalse(alnum.validate([]));
61+
assert.isFalse(alnum.validate({}));
62+
assert.isFalse(alnum.validate(new Array('foo')));
63+
assert.isFalse(alnum.validate(new Object({foo: 'bar'})));
64+
65+
class Foo {}
66+
assert.isFalse(alnum.validate(new Foo()));
67+
});
68+
69+
});

0 commit comments

Comments
 (0)