"/(?=.{1,32}$)^[a-zA-Z0-9]([a-zA-Z0-9_\\-.:]*)[a-zA-Z0-9]$/"


我有上面的正则表达式,它只接受一些特殊字符,并确保字符串不应以特殊符号开头或结尾

当前接受的字符串:


A B C D
abcd-gffgfg
abcdeer-errt.ertert-rtr
abcd -._:fgdfgfg(不应允许)


当前被拒绝的字符串:


A B C D-
abcd $ fgfg
-&A B C D
-A B C D


我想修改上面的表达式以在任何两个单词之间仅接受一个特殊字符,并只允许几个特殊符号(。_-:)

建议我如何修改上述正则表达式。

最佳答案

尝试:



const regex = /(?=.{1,32}$)^(([a-zA-Z0-9])+[_\-.:])*([a-zA-Z0-9])+$/
const strs = [
  "abcd-abcd",
  "abcd_fdfg-dfgdg.fgd:dfgdfg",
  "abcd",
  "abcd-._:abcd",
  "abcd:dfgdfg:_:"
]

console.log(strs.map(str => regex.test(str)))





正则表达式基本上说:(wordchars + 1个特殊字符)重复0次或更多次,然后是wordchars。

关于javascript - 用于验证字符串的正则表达式,该字符串确保单词应仅由一个特殊符号分隔,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59422104/

10-12 12:23