首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >仅返回字符串中的数字0-9

仅返回字符串中的数字0-9
EN

Stack Overflow用户
提问于 2009-05-10 00:57:12
回答 8查看 77.5K关注 0票数 76

我需要一个可以在VBScript和.NET中使用的正则表达式,它将只返回在字符串中找到的数字。

例如,以下任何“字符串”应仅返回1231231234

123-1234

  • 123-123-1234

  • (123)123-1234

  • 123.123.1234

  • 123 123 1234
  • 123 1234
  • ( 123 )
  • 1 2 3 1 2 3 1 2 3 4

这将在电子邮件解析器中使用,以查找客户可能在电子邮件中提供的电话号码,并进行数据库搜索。

我可能错过了一个类似的正则表达式,但我确实在regexlib.com上搜索了一下。

编辑-在设置musicfreak的答案后由RegexBuddy生成的代码

VBScript代码

代码语言:javascript
复制
Dim myRegExp, ResultString
Set myRegExp = New RegExp
myRegExp.Global = True
myRegExp.Pattern = "[^\d]"
ResultString = myRegExp.Replace(SubjectString, "")

VB.NET

代码语言:javascript
复制
Dim ResultString As String
Try
      Dim RegexObj As New Regex("[^\d]")
      ResultString = RegexObj.Replace(SubjectString, "")
Catch ex As ArgumentException
      'Syntax error in the regular expression
End Try

C#

代码语言:javascript
复制
string resultString = null;
try {
    Regex regexObj = new Regex(@"[^\d]");
    resultString = regexObj.Replace(subjectString, "");
} catch (ArgumentException ex) {
    // Syntax error in the regular expression
}
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-05-10 01:04:40

我不知道VBScript是否有某种“正则表达式替换”函数,但如果它有,那么您可以执行如下伪代码:

代码语言:javascript
复制
reg_replace(/\D+/g, '', your_string)

我不知道VBScript,所以我不能给你确切的代码,但这将删除任何不是数字的东西。

编辑:确保全局标志(regexp末尾的"g“),否则它将只匹配字符串中的第一个非数字。

票数 14
EN

Stack Overflow用户

发布于 2009-05-10 01:10:45

在.NET中,您可以仅从字符串中提取数字。如下所示:

代码语言:javascript
复制
string justNumbers = new String(text.Where(Char.IsDigit).ToArray());
票数 202
EN

Stack Overflow用户

发布于 2017-04-12 20:20:08

作为根据similar question's答案改编的主.Net解决方案的替代方案:

代码语言:javascript
复制
string justNumbers = string.Concat(text.Where(char.IsDigit));
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/844461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档