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

Javascript 正则表达式-匹配除单个数字以外的所有字母数字字符,javascript,ruby,regex,Javascript,Ruby,Regex,我想创建一个正则表达式,只匹配英语字母数字字符,但忽略(或丢弃)Ruby中的孤立数字(如果可能的话,也可以在JS中) 示例: 1)我想匹配以下内容: 4刀 9gag 测试91323432 asf5asdfaf35edfdfad 阿法菲 但不是: 92342424 343424 34432 等等 以上就是我想要的 编辑:我删除了第二个子问题。只需关注第一个问题,非常感谢您的回答 对不起,我的正则表达式技能不是很好(因此这个问题!) 谢谢。您可以尝试以下表达式(适用于Ruby和Javascr

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

示例:

1)我想匹配以下内容:

  • 4刀
  • 9gag
  • 测试91323432
  • asf5asdfaf35edfdfad
  • 阿法菲
但不是:

  • 92342424
  • 343424
  • 34432 等等
以上就是我想要的

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

对不起,我的正则表达式技能不是很好(因此这个问题!)


谢谢。

您可以尝试以下表达式(适用于Ruby和Javascript):

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

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

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

您可以尝试以下表达式(在Ruby和Javascript中都适用):

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

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

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

您可以尝试以下表达式(在Ruby和Javascript中都适用):

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

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

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

您可以尝试以下表达式(在Ruby和Javascript中都适用):

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

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

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

编辑-修复了剪切和粘贴错误,并添加了扩展字符范围
\x80-\xa5

其中包括重音字符(取决于区域设置,数字可能不同)

可能这
^(?![0-9]+$)[a-zA-Z0-9\x80-\xa5]+$

编辑-修复了剪切和粘贴错误,并添加了扩展字符范围
\x80-\xa5

其中包括重音字符(取决于区域设置,数字可能不同)

可能这
^(?![0-9]+$)[a-zA-Z0-9\x80-\xa5]+$

编辑-修复了剪切和粘贴错误,并添加了扩展字符范围
\x80-\xa5

其中包括重音字符(取决于区域设置,数字可能不同)

可能这
^(?![0-9]+$)[a-zA-Z0-9\x80-\xa5]+$

编辑-修复了剪切和粘贴错误,并添加了扩展字符范围
\x80-\xa5

其中包括重音字符(取决于区域设置,数字可能不同)

对于任何拉丁字母:

/(?=.*\p{Alpha})\p{Alnum}+/
对于任何拉丁字母:

/(?=.*\p{Alpha})\p{Alnum}+/
对于任何拉丁字母:

/(?=.*\p{Alpha})\p{Alnum}+/
对于任何拉丁字母:

/(?=.*\p{Alpha})\p{Alnum}+/

我很确定你不能用一个正则表达式做你想做的事。在一组数字中的任何一个单独的字母字符都会使它成为一个有效的匹配,并且在正则表达式中没有任何方法来表示,因为你所说的是“在这个单词前面需要一个字母,但是只有在中间没有或中间有一个字母的情况下”,并且正则表达式不会这样做。 您的最佳选择是进行两次传球:

  • 一个匹配您的字母数字,加上特殊的“法语”字符(模式:待定,取决于您想要接受的特殊字符),以及
  • 仅与数字匹配的一个(模式:将包括
    [0-9]+
    …需要有关具体情况的更多信息,以提供最终完整的正则表达式)
  • 最终需要的值需要通过第一个正则表达式,而第二个正则表达式则不通过

    还有

    为了给你一个更好的答案,我们需要知道几件事:

    • 您是否正在测试整个字符串是否与模式匹配
    • 您是否试图在更大的字符串中捕获模式的单个实例
    • 您是否试图在更大的字符串中捕获模式的所有实例
    这些问题的答案对您需要的最终正则表达式模式有很大影响

    最后

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

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

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

    我很确定你不能用一个正则表达式做你想做的事情。在一组数字中的任意位置,只要一个字母字符就可以了