如何使用正则表达式从字符串中查找字母数字单词?

时间:2012-05-14 11:35:44

标签: c# asp.net regex

  

全部订单享受八折优惠免费送货(仅限首次客户)!在结账时输入优惠码NEW20VISION。限时优惠。

我从db获取这种类型的字符串。我必须查明字符串中是否有任何字母数字。如果它包含任何字母数字字。我有下划线。在上面的例子中它是:NEW20VISION < / p>

4 个答案:

答案 0 :(得分:1)

使用以下Regex     / [A-ZA-Z0-9] /

或查看链接:http://www.dreamincode.net/code/snippet5818.htm

答案 1 :(得分:1)

RaphaëlAlthaus是对的,但我认为最好为它增加几个被动组以避免无用的比赛

测试字符串:

Get 20% Off Your Entire Order & FREE Shipping (first55 time55 custo55mers only)! Enter coudf45pon code NEW20VISION at checkout. Limited time offer.

RaphaëlAlthaus的正则表达式:

\b[a-zA-Z\d]*(([a-zA-Z]+\d+)|(\d+[a-zA-Z+]))[a-zA-Z\d]*\b

我的正则表达式:

\b[a-zA-Z\d]*(?:(?:[a-zA-Z]+\d+)|(?:\d+[a-zA-Z+]))[a-zA-Z\d]*\b

RaphaëlAlthaus的正则表达结果:

 ===next match===
Group[0]: first55
Group[1]: t55
Group[2]: t55
Group[3]: 
===next match===
Group[0]: time55
Group[1]: e55
Group[2]: e55
Group[3]: 
===next match===
Group[0]: custo55mers
Group[1]: 5m
Group[2]: 
Group[3]: 5m
===next match===
Group[0]: coudf45pon
Group[1]: 5p
Group[2]: 
Group[3]: 5p
===next match===
Group[0]: NEW20VISION
Group[1]: 0V
Group[2]: 
Group[3]: 0V

我的正则表达式的结果:

 ===next match===
    Group[0]: first55
    ===next match===
    Group[0]: time55
    ===next match===
    Group[0]: custo55mers
    ===next match===
    Group[0]: coudf45pon
    ===next match===
    Group[0]: NEW20VISION

答案 2 :(得分:0)

嗯,我觉得有点困惑,因为你搜索的是alphaandnumeric词(“20”,“20ab”,“test”被认为是字母数字)。

这个应该有效(可以简化,我很确定......)

使用Regex.Replace进行测试,而NEW20VISION不在您的字符串中。

 var regex = @"\b[a-zA-Z\d]*(([a-zA-Z]+\d+)|(\d+[a-zA-Z+]))[a-zA-Z\d]*\b";
 var text = "Get 20% Off Your Entire Order & FREE Shipping (first time customers only)! Enter coupon code NEW20VISION at checkout. Limited time offer.";

 var text2 = "20 test 1020test test2010, test10 20";


 var t2 = Regex.Replace(text, regex, string.Empty); 
 var t3 = Regex.Replace(text2, regex, string.Empty);

答案 3 :(得分:0)

这个怎么样:

Regex regexObj = new Regex(@"\w*(?:\d\p{L}|\p{L}\d)\w*");

这匹配一个包含至少一个数字后跟一个字母的字母数字字,反之亦然。

唯一的&#34;疣&#34;是\w也匹配下划线。如果你不想要它,那就会变得更加丑陋:

Regex regexObj = new Regex(@"[\d\p{L}]*(?:\d\p{L}|\p{L}\d)[\d\p{L}]*");