全部订单享受八折优惠免费送货(仅限首次客户)!在结账时输入优惠码NEW20VISION。限时优惠。
我从db获取这种类型的字符串。我必须查明字符串中是否有任何字母数字。如果它包含任何字母数字字。我有下划线。在上面的例子中它是:NEW20VISION < / p>
答案 0 :(得分:1)
使用以下Regex / [A-ZA-Z0-9] /
答案 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}]*");