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
%>
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>
RegExp 需 IIS 安裝「Microsoft VBScript Regular Expressions 5.5」 (通常預裝)。-?\d+(\.\d+)?。StrConv(str, vbNarrow) 轉半形再匹配。"12",如需數值用 CInt/CLng 轉換。