【问题标题】:How to write regex to check if a string contains special character and multiple whitespaces如何编写正则表达式来检查字符串是否包含特殊字符和多个空格
【发布时间】:2020-10-05 06:31:45
【问题描述】:

我正在尝试检查字符串是否包含 ^°<>#*~!"§$%?®©¶ 并使用了这种方法:

string myString = "Test%";
var format = /[^°<>#*~!"§$%?®©¶/g]+/;
let checkIfContains = format.test(myString);

但是当我使用多个单词时,它会失败,因为有一个空格。删除空格后,我还检查了空格和字符串长度,但我需要一个正则表达式或格式来解决问题。是否可以在 TypeScript 或 JavaScript 中执行此操作?

【问题讨论】:

  • 请提供此代码失败的示例输入
  • 你没有关闭 ] 开始 - 哦,等你做......但你有 /g 在 [] ... 不应该是 [^°&lt;&gt;#*~!"§$%?®©¶]+/g - 和将^ 作为[ 之后的第一个字符会否定搜索 - 所以你会想要[°^&lt;&gt;#*~!"§$%?®©¶]+/g
  • 我建议你把所有特殊字符都删掉

标签: javascript regex typescript


【解决方案1】:

首先,全局修饰符 (/g) 应该放在正则表达式的最后(但如果您只是寻找任何匹配项,则此处不需要)。 其次,紧跟在[ 之后的^ 符号被视为[] 表示的字符集的NOT 修饰符,因此在这种情况下,它应该由\ 元字符前置,或者放在@987654325 内的其他位置@。

所以找到这些字符的正确正则表达式是:

    const regex = /[\^°<>#*~!"§$%?®©¶]+/;

正则表达式查找这些字符中的任何一个和多个空格有点棘手,因为我们需要在这里处理几种情况:

  1. [空白][特殊字符][空白]
  2. [空白][空白][特殊字符]
  3. [特殊字符][空格][空格]

另外,中间可能还有其他字符

正则表达式来处理这个:

    const regex = /(\s+.*[\^°<>#*~!"§$%?®©¶]+.*\s+|\s+.*\s+.*[\^°<>#*~!"§$%?®©¶]+|[\^°<>#*~!"§$%?®©¶]+.*\s+.*\s+)/;

【讨论】:

  • 你太棒了!.. 非常感谢,它似乎有效,我会尽快尝试,如果有问题,我会通知你。
猜你喜欢
  • 2022-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-28
相关资源
最近更新 更多