首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

ASP 經典:從文本框值提取第一個數字的正則與字串處理方法

     編輯:程式設計綜合問答

問題場景

ASP (Classic ASP, VBScript) 頁面中,文本框 DM 的值為 <%=rs("TEL")%> (如 "DX 12;1252;LJ352"),需提取**第一個數字** (範例中為 12)。

方法一:正則表達式 (推薦,最健壯)

<%
Function GetFirstNumber(str)
    Dim regEx, matches, match
    Set regEx = New RegExp
    regEx.Pattern = "\d+"          ' 匹配一個或多個數字
    regEx.Global = False           ' 只找第一個
    regEx.IgnoreCase = True
    Set matches = regEx.Execute(str)
    If matches.Count > 0 Then
        GetFirstNumber = matches(0).Value
    Else
        GetFirstNumber = ""        ' 或 "無數字"
    End If
End Function

' 使用
Dim firstNum
firstNum = GetFirstNumber(Request.Form("DM"))
Response.Write "第一個數字: " & firstNum
%>

方法二:純字串處理 (無正則支援環境)

<%
Function GetFirstNumberStr(str)
    Dim i, ch, numStr, inNumber
    numStr = ""
    inNumber = False
    For i = 1 To Len(str)
        ch = Mid(str, i, 1)
        If IsNumeric(ch) Then
            numStr = numStr & ch
            inNumber = True
        Else
            If inNumber Then Exit For ' 已讀完第一組連續數字
        End If
    Next
    GetFirstNumberStr = numStr
End Function
%>

方法三:VBScript Execute 動態建立 (不推薦,難維護)

略。

完整頁面範例

<%@ Language=VBScript %>
<%
Option Explicit
Function GetFirstNumber(str)
    Dim regEx, matches
    Set regEx = New RegExp
    regEx.Pattern = "\d+"
    regEx.Global = False
    Set matches = regEx.Execute(str)
    If matches.Count > 0 Then GetFirstNumber = matches(0).Value Else GetFirstNumber = ""
End Function
%>
<html>
<body>
<form method="post">
  輸入: <input name="DM" value="DX 12;1252;LJ352">
  <input type="submit" value="提取">
</form>
<%
If Request.Form("DM") <> "" Then
    Response.Write "<p>第一個數字: " & GetFirstNumber(Request.Form("DM")) & "</p>"
End If
%>
</body>
</html>

注意事項

  1. RegExp 需 IIS 安裝「Microsoft VBScript Regular Expressions 5.5」 (通常預裝)。
  2. 若數字可能包含小數點/負號,Pattern 改為 -?\d+(\.\d+)?。
  3. 中文全形數字 (123) 需先 StrConv(str, vbNarrow) 轉半形再匹配。
  4. 回傳型別:字串 "12",如需數值用 CInt/CLng 轉換。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved