【问题标题】:RegExp alphanumeric String + Special LettersRegExp 字母数字字符串 + 特殊字母
【发布时间】:2010-07-08 10:15:30
【问题描述】:

第一个问题:我想替换除字母数字和特殊字母以外的所有字符。例如,somestringğüş iöç123456!@#$%^&*()_+somestringğüş iöç123456

第二个:例如some---example--long-stringsome-example-long-string

我不太了解正则表达式,所以我需要 2 个简单的正则表达式字符串。谢谢

【问题讨论】:

  • 不,我只是想创建一些 share.php 脚本(作为 iframe 模态框。我项目的一部分)。
  • 无意冒犯。你给出了问题和答案的提示。使用正则表达式可以替换特殊字符。
  • 如果它看起来像作业,如果它读起来像作业,那一定是作业。请不要理会标签。
  • 我解释说,这不是家庭作业,这是我自己项目的一部分。如果你想感觉这是作业,不需要特殊的“作业”标签,请不要编辑我的问题,如果你想感觉像作业一样自己做。不幸的是,我无法理解 ST 社区的作业误解。

标签: javascript regex string


【解决方案1】:

首先。它匹配任何非字母数字、空格或非ASCII字符,并将它们替换为空字符串。

str.replace(/[^a-z0-9\s\x80-\uFFFF]+/gi, '');

没有我可以使用的 unicode 类,所以我要么包含所有 unicode 字符,要么列出不是字母、数字或空格的字符。

第二个。它匹配两个或多个破折号的任意序列,并用一个破折号替换它们。

str.replace(/-{2,}/g, '-');

【讨论】:

  • ğş\x80-\xff 块之外。
  • 您可以组合这些替换:str.replace(/[^a-z0-9\s\x80-\uFFFF]+/gi, '-')
  • @Gumbo:不完全是,因为那样会在a###b 中引入破折号。当然,这可能没问题,但这不是指定的。尽管如此,还是可以在一个正则表达式中做到这一点,但我不确定它是否值得,而且我不确定 OP 希望 a#-#-#-#b 变成什么(即 a---ba-b?)
【解决方案2】:
 /* 1. */   return x.replace(/[!@#$%^&*()_+]/g, '');
 /* 2. */   return x.replace(/-{2,}/g, '-');

【讨论】:

  • 两个或多个连字符应替换为空字符串。
  • 你第一次是对的:应该是replace(/-{2,}/g, '-')some---example --> some-example
  • @Silent & @Kobi:其实没有区别,他们都做同样的事情。我刚刚测试过。
  • @oguz - 我不明白这怎么可能,这会将a---b 更改为ab,而不是a-b
  • @Kobi:你说得对,@Kenny:对不起,不知道我在想什么
猜你喜欢
  • 1970-01-01
  • 2019-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-16
  • 2014-03-23
相关资源
最近更新 更多