Regex 修正正则表达式

Regex 修正正则表达式,regex,Regex,我需要帮助为字符串编写正则表达式,该字符串应包含字母数字符号,并且只包含以下符号之一:#、?、$、% 例如:abx12A 35; we正常,但fsa?#ds不正常 我尝试了类似于/[a-zA-z0-9][#?$%]{0,1}/的东西,但它不起作用。 有什么想法吗? 谢谢类似于: ^[a-zA-Z0-9]*[#?$%]?[a-zA-Z0-9]*$ 应该这样做(并且,根据您的正则表达式引擎,您可能需要转义一个或多个特殊字符) 它基本上是来自“alpha”类型类的零个或多个,然后是来自“特殊”类型类

我需要帮助为字符串编写正则表达式,该字符串应包含字母数字符号,并且只包含以下符号之一:#、?、$、%

例如:abx12A 35; we正常,但fsa?#ds不正常

我尝试了类似于/[a-zA-z0-9][#?$%]{0,1}/的东西,但它不起作用。 有什么想法吗? 谢谢

类似于:

^[a-zA-Z0-9]*[#?$%]?[a-zA-Z0-9]*$
应该这样做(并且,根据您的正则表达式引擎,您可能需要转义一个或多个特殊字符)

它基本上是来自“alpha”类型类的零个或多个,然后是来自“特殊”类型类的零个或一个,再次是零个或多个“alpha”


您可以根据需要调整每个字符类中包含的内容,但这是在大量其他内容中获取其中一个内容的一般方法。

如果您也需要匹配空字符串,则需要使用

^[a-zA-Z0-9]*(?:[#?$%][a-zA-Z0-9]*)?$

详细信息

  • ^
    -字符串的开头
  • [a-zA-Z0-9]*
    -零个或更多字母数字
  • (?:[#?$%][a-zA-Z0-9]*)?
    -正好出现一次:
    • [#?$%]
      -集合中的字符
    • [a-zA-Z0-9]*
      -零个或更多字母数字
  • $
    -字符串结尾
注:导致严重问题

如果不允许空字符串,请将
*
替换为
+

^[a-zA-Z0-9]+(?:[#?$%][a-zA-Z0-9]+)?$
            ^                    ^
试试这个

const regex=/^[a-zA-z0-9]*[#?$%]?[a-zA-z0-9]*$/
常量输入=[
“abx12A#我们”,
“a#”,
"a",,
“a#a”
]
常量失败输入=[
“fsa?#ds”
]
console.log('=============测试应成功=========================='))
for(perfectInputs的const perfectInput){
常量结果=正则表达式测试(perfectInput)
log(`test${perfectInput}:${result}`)
console.log()
}
console.log('=============测试应失败=========================='))
for(失败输入的常量失败输入){
常量结果=正则表达式测试(失败输入)
log(`test${failedInput}:${result}`)
console.log()

}
如果特殊字符可以位于字符串的开头或结尾,则可以使用前瞻:

^(?=[^#?$%]*[#?$%]?[^#?$%]*$)[a-zA-Z0-9#?$%]+$
\\ uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
\_____________/----其他条件

可能
/^[a-zA-Z0-9]+(?:[#?$%][a-zA-Z0-9]+)?$/
a-z
->
a-z
/^(?=[^#?$%]*[#?$%]?[^#?$%]*$)[a-zA-Z0-9#?$%]*$/