什么是以下示例的句子仅包含3个点和数字的何处。
:let string =
"2.3.4.5
2.3.4.1
2.3.3.3"
字符串可以包含newline字符?
我认为这可能是您的之后。
我已经扔了一个无效的人。
let str=
`2.3.4.5
2.44.2
2.3.4.1
2.3.3.3
3.4.2.4.5
`;
console.log(
str.match(/^[0-9]+.[0-9]+.[0-9]+.[0-9]+$/gm)
);
这是正则 .test()
操作有意义的地方。
/^(d+.d+.d+.d+)+$/gm.test(str);
这是您可以朝着实用程序的方向进行采样的逻辑:
let str =
`2.3.4.5
2.44.2
2.3.4.1
234.622.166.2346
1.
127.0.0.1.
125.75.23.110
24.66.256.1
sie4wg4t7hweio478tedehyb5ryb
Thanksr ok
nn
12.34.56.-8
2.3.3.3
3.4.2.4.5
poop
.34.5.34.
`
// beast mode function to check if string is a valid IP between 0-255
const isValidIP = (ip) => {
if (/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(ip))
return true
return false
}
const results = str
.split('n')
.reduce((all, ip) => {
const possibleIP = ip.match(/^[0-9]+.[0-9]+.[0-9]+.[0-9]+$/gm)
if (possibleIP && isValidIP(ip)) { all.valid.push(ip) }
else { all.invalid.push(ip) }
return all
}, { valid: [], invalid: [] })
console.log(results)
- 由
n
分开以创建一系列可能的匹配项 - 通过累加器
reduce()
运行每场比赛 - 如果IP有效,请将其添加到
results.valid
- 如果IP是其他任何东西,请将其添加到
results.invalid
- 调查
results
对象
以匹配有效的IPv4地址0.0.0.0
-255.255.255.255
"\b(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\b"
或,如果每个人都应该占据所有一行:
"^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$"
设置^$
应在线路断开时匹配。