正则表达式 - 匹配除单个数字之外的所有字母数字字符

Regular Expressions - Match all alphanumeric characters except individual numbers

本文关键字:数字字符 数字 单个 正则表达式      更新时间:2023-09-26

我想创建一个正则表达式来仅匹配英文字母数字字符,但忽略(或丢弃)Ruby中的孤立数字(如果可能的话,在JS中也是如此)。

例子:

1) 我希望匹配以下内容:

  • 4chan
  • 9堵嘴
  • 测试91323432
  • ASF5ASDFAF35EDFDFAD
  • 阿法法夫

但不是:

  • 92342424
  • 343424
  • 34432等等..

以上正是我想要的。

编辑:我删除了第二个子问题。只关注第一个,非常感谢您的回答!!

抱歉,我的正则表达式技能不是那么好(因此这个问题!

谢谢。

你可以尝试以下表达式(在Ruby和Javascript中都有效):

^(?!^'d+$)[[:alnum:]]+$

这首先通过使用负的前瞻(?!^[0-9]+$)来确保字符串不仅仅是数字,然后它匹配一个或多个字母数字字符,支持 Unicode 字符,这意味着这也适用于法语字母。

编辑:如果你只想要英文字母:

^(?!^'d+$)'w+$

鲁布拉演示

对于任何拉丁字母:

/(?=.*'p{Alpha})'p{Alnum}+/
我很

确定你不能用一个正则表达式做你想做的事情。 一组数字中的任何位置的单个字母字符将使其成为有效的匹配项,并且无法在正则表达式中表示它,因为您真正说的是"这个单词的前面需要一个字母,但前提是中间或末尾没有字母", 正则表达式不会这样做。

最好的办法是执行两次传递:

  1. 与您的字母数字匹配,加上特殊的"法语"字符(模式:TBD,基于您要接受的特殊字符),以及
  2. 一个只匹配数字(模式:将包括[0-9]+。 。需要有关具体情况的更多信息,以便为您提供最终的完整正则表达式)

您最终想要的值需要通过第一个正则表达式并失败第二个正则表达式。

也。。。

为了给您更好的答案,我们需要了解几件事:

  • 您是否正在测试整个字符串是否与模式匹配?
  • 您是否正在尝试在更大的字符串中捕获模式的单个实例?
  • 您是否尝试在更大的字符串中捕获模式的所有实例?

这些问题的答案对您需要的最终正则表达式模式有很大的影响。

最后。。。

关于"法语"字符的说明。 。 。您需要非常具体地说明哪些特殊字符是可接受的,哪些是不可接受的。 正则表达式中的特殊字符匹配主要有三种方法:组、加法和减法

  • 组 - 这些字符表示您正在使用的正则表达式版本中的一组预设字符。 例如,'s匹配所有空格
  • 加法 - 这是列出正则表达式中每个可接受的字符(或字符范围)的过程。 当您有一小组可接受的字符时,这会更好
  • 减法 - 这是列出正则表达式中每个不可接受的字符(或字符范围)的过程。 当您有一大组可接受的字符时,这会更好

如果您能澄清其中的一些问题,我们应该能够给您更好的答案。

也许这^(?![0-9]+$)[a-zA-Z0-9'x80-'xa5]+$

编辑 - 修复了剪切和粘贴错误并添加了扩展字符范围'x80-'xa5
其中包括重音字符(根据区域设置,数字可能会有所不同)