我想创建一个RegEx,只匹配英语字母数字字符,但忽略(或丢弃)Ruby中的孤立数字(如果可能,也可以在JS中)。
示例:
1)我希望以下内容匹配:
但不是:
以上就是我想要的。
编辑:我删除了第二个子问题。只关注第一个,非常感谢你的答案!!
抱歉,我的正则表达能力不是很好(因此这个问题!)
谢谢。
答案 0 :(得分:1)
您可以尝试以下表达式(在Ruby和Javascript中均可使用):
^(?!^\d+$)[[:alnum:]]+$
这首先确保字符串不仅仅是数字,使用负向前看(?!^[0-9]+$)
,然后它匹配一个或多个字母数字字符,支持Unicode字符,这意味着它也适用于法语字母。
编辑:如果您只想要英文字母:
^(?!^\d+$)\w+$
答案 1 :(得分:1)
任何拉丁字母:
/(?=.*\p{Alpha})\p{Alnum}+/
答案 2 :(得分:1)
我很确定你不能用一个正则表达式做你想做的事情。单个字母字符,在一组数字中的任何位置,都会使它成为有效匹配,并且无法在正则表达式中表示,因为你真正说的是"需要一个字母在这个单词的前面,但只有在中间或末尾没有字母的情况下,正则表达式不会这样做。
你最好的选择是两次通过:
[0-9]+
...需要有关具体情况的更多信息,以便为您提供最终的完整正则表达式)你想要的最终值需要通过第一个正则表达式而不是第二个正则表达式。
另外。 。
为了给你一个更好的答案,我们需要了解一些事情:
这些问题的答案会对您需要的最终正则表达式产生重大影响。
最后。 。
"法语"人物。 。 。你需要非常具体地说明哪些特殊字符是可以接受的,哪些特征字符是不可接受的。在regex中有三种主要的特殊字符匹配方法:组,加法和减法
\s
匹配所有空格如果你能解决其中一些问题,我们应该能够给你一个更好的答案。
答案 3 :(得分:0)
也许这是^(?![0-9]+$)[a-zA-Z0-9\x80-\xa5]+$
修改 - 修正了剪切和粘贴错误,并添加了扩展字符范围\x80-\xa5
其中包括重音字符(取决于区域设置,数字可能不同)