【问题标题】:Regex expression to allow # only in between chars in a string正则表达式允许 # 仅在字符串中的字符之间
【发布时间】:2021-01-06 09:41:51
【问题描述】:

如何编写 JavaScript 正则表达式来处理

案例 1. 允许所有字符,但字符之间只允许使用“#”

案例 2. 只允许字母数字和“#”,但字符之间有“#”

For example :
case1 : var formattedText = inputText.replace(/^(.+#+.)$/g, ''); //not working

【问题讨论】:

  • inputText.replace(/^#+|#+$/g,'')?

标签: javascript regex


【解决方案1】:

要匹配除 # 开头和结尾的所有字符,您可以使用除 # 之外的否定字符类 [^#\r\n] (或换行符,如果需要)

^[^#\r\n]+(?:#+[^#\r\n]+)*$

Regex demo

要仅匹配字母数字且 # 不在字符串的开头或结尾,您可以使用:

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

Regex demo

const regex = /^[a-zA-Z0-9]+(?:#+[a-zA-Z0-9]+)*$/;
[
  "#test",
  "test#",
  "test",
  "test#test",
  "test#test#test"
].forEach(s => console.log(`${s} --> ${regex.test(s)}`));

【讨论】:

  • 嗨@第四只鸟,谢谢你的回答。一个查询,如果我不想验证字符串末尾的'#'怎么办?
  • @Soojoo Dp 你的意思是最后应该被允许?
  • @Soojoo 那你可以用^[a-zA-Z0-9]+[#a-zA-Z0-9]+$regex101.com/r/qleCMH/1
  • 好的,知道了,那case:1呢?
  • @Soojoo 对于案例 1,您可以使用 ^[^#\r\n]+.*$ regex101.com/r/bCRhgg/1 如果对于案例 2,您还希望允许单个字符 ^[a-zA-Z0-9]+[#a-zA-Z0-9]*$ regex101.com/r/RWsdIq/1
猜你喜欢
  • 2012-08-02
  • 1970-01-01
  • 2017-08-15
  • 2011-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2022-11-29
相关资源
最近更新 更多