我想创建一个正则表达式以仅匹配英文字母数字字符,但忽略(或丢弃)Ruby 中的孤立数字(如果可能的话,也可以在 JS 中)。
例子:
1)我希望匹配以下内容:
- 4chan
- 9gag
- 测试91323432
- asf5asdfaf35edfdfad
- 阿法夫
但不是:
- 92342424
- 343424
- 34432等..
以上正是我想要的。
编辑:我删除了第二个子问题。只关注第一个,非常感谢您的回答!!
抱歉,我的正则表达式技能不是很好(因此这个问题!)
谢谢你。
我想创建一个正则表达式以仅匹配英文字母数字字符,但忽略(或丢弃)Ruby 中的孤立数字(如果可能的话,也可以在 JS 中)。
例子:
1)我希望匹配以下内容:
但不是:
以上正是我想要的。
编辑:我删除了第二个子问题。只关注第一个,非常感谢您的回答!!
抱歉,我的正则表达式技能不是很好(因此这个问题!)
谢谢你。
您可以尝试以下表达式(适用于 Ruby 和 Javascript):
^(?!^\d+$)[[:alnum:]]+$
这首先通过使用否定前瞻确保字符串不仅仅是数字(?!^[0-9]+$)
,然后匹配一个或多个字母数字字符,支持 Unicode 字符,这意味着这也适用于法语字母。
编辑:如果你只想要英文字母:
^(?!^\d+$)\w+$
对于任何拉丁字母:
/(?=.*\p{Alpha})\p{Alnum}+/
我很确定你不能用一个正则表达式做你想做的事。一组数字中的任何位置的单个字母字符都将使其成为有效匹配,并且无法在正则表达式中表示它,因为您真正要说的是“前面需要一个字母”这个词,但前提是中间或末尾没有字母”,而正则表达式不会这样做。
你最好的选择是做两次传球:
[0-9]+
需要有关具体情况的更多信息,以便为您提供最终的完整正则表达式)您最终想要的值将需要通过第一个正则表达式并通过第二个正则表达式。
还 。. .
为了给你一个更好的答案,我们需要知道几件事:
这些问题的答案对您需要的最终正则表达式模式有很大影响。
而且,最后。. .
关于“法语”字符的注释。. . 您需要非常具体地确定哪些特殊字符可以接受,哪些不可以。正则表达式中特殊字符匹配的三种主要方法:组、加法和减法
\s
匹配所有空格如果你能弄清楚其中一些问题,我们应该能给你一个更好的答案。
也许这 ^(?![0-9]+$)[a-zA-Z0-9\x80-\xa5]+$
编辑 - 修复了剪切和粘贴错误并添加了\x80-\xa5
包含重音字符的扩展字符范围(取决于区域设置,数字可能会有所不同)