-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathvalidator.js
42 lines (39 loc) · 1.41 KB
/
validator.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
document.getElementById('button').onclick = () => {
const text = document.getElementById('text').value;
result = document.getElementById('result')
validate(text).then(val => {
result.style.color = '#000000'
result.textContent = val
}).catch(val => {
result.style.color = '#F44336'
result.textContent = val
})
}
function validate(text) {
const BR_GOOD = /<br \/>/g
const BR_WITH_CLOSE = /<br(| +)\/>/g
const BR_OPEN = /<br *>/g
const BR_CLOSE = /<\/br *>/g
const BR_CAPITALIZED = /<BR *\/?>/g
br_goods = text.match(BR_GOOD)
br_with_closes = text.match(BR_WITH_CLOSE)
br_opens = text.match(BR_OPEN)
br_closes = text.match(BR_CLOSE)
br_capitalized = text.match(BR_CAPITALIZED)
if (br_opens) {
return Promise.reject('閉じない br タグが含まれています。<br /> を使いましょう。')
}
if (br_closes) {
return Promise.reject('br の閉じタグが含まれています。<br /> を使いましょう。')
}
if (br_with_closes) {
return Promise.reject('br の後のスペースは一つにしましょう。')
}
if (br_capitalized) {
return Promise.reject('タグ名が大文字の BR タグが含まれています。<br /> を使いましょう。')
}
if (br_goods) {
return Promise.resolve('素晴らしいです。これからも <br /> を使いましょう!')
}
return Promise.resolve('br タグが含まれていません。')
}