如何检查字符串是否仅包含点和数字



什么是以下示例的句子仅包含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)
  1. n分开以创建一系列可能的匹配项
  2. 通过累加器reduce()
  3. 运行每场比赛
  4. 如果IP有效,请将其添加到results.valid
  5. 如果IP是其他任何东西,请将其添加到results.invalid
  6. 调查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])$"

设置^$应在线路断开时匹配。

最新更新