使用正则表达式查找包含数值的所有单词?

时间:2015-10-06 07:40:45

标签: c# .net regex

在我的Dot net应用程序中,我必须找到包含字母和数字值的所有单词,我试图找到但未能找到正确的答案 我有(?=.\d)\w+正则表达式,但它返回45有效。下面是我的示例列表,其中粗体是正确的单词,其他是假单词

  • madan45
  • 45madan
  • mad45an
  • 马丹
  • 45

我不能放[a-zA-Z],因为我的文字可能包含非英语ex。 โครงการสาวอีสานก็5000บาท。

5 个答案:

答案 0 :(得分:1)

(?:\d+[a-z]|[a-z]+\d)[a-z\d]*

此Reg Ex应符合您的要求。

答案 1 :(得分:1)

(?:^|(?<=\s))(?=\S*\d)(?=\S*(?!\s)\D)\S+(?=\s|$)

Try this.See demo.

https://regex101.com/r/cJ6zQ3/15

答案 2 :(得分:1)

^(?!(\d+|[A-z]+)$)\w+$

(\d+|[A-z]+)$:所有字母或全部数字。

(?!(\d+|[A-z]+)$):否定前瞻 - 断言不可能匹配所有字母或所有数字。

答案 3 :(得分:0)

all the words which contain alphabets and numeric values

fail to find proper answer I have (?=.\d)\w+

You were close. The lookahead should match any word character before the digit to meet the numeric condition. And then, in the main pattern, require a letter:

Regex:

(?=\w*\d)\d*[A-Za-z]\w*

regex101 Demo

  1. Lookahead
    • \w* Any word character: [A-Za-z0-9_]
    • \d Requires 1 digit.
  2. Main pattern
    • \d* Any digits preceding a letter.
    • [A-Za-z] Requires 1 letter.
    • \w* Rest of the word

答案 4 :(得分:0)

这也有效:

string pattern = @"^(?=\D*\d)(?=\d*\D)\w+$";

检查:

var inputs = new List<string> { "madan45", "45madan", "mad45an", "Madan", "45" };

foreach (var str in inputs)
    Console.WriteLine($"{str} - {Regex.IsMatch(str, pattern)}");

输出:

//  madan45 - True
//  45madan - True
//  mad45an - True
//  Madan - False
//  45 - False