用正则表达式解析IPv4和IPv6地址字符串
来源:互联网 发布:BIOS 取消网络唤醒 编辑:程序博客网 时间:2024/05/08 18:49
以下是经过我的.net C# 代码百般测试的,绝对经得住考验!
IPv4
[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}
IPv6
((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}))|:)))(%.+)?
ipv4 | ipv6 (this is good based on test)
([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})|(((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}))|:)))(%.+)?)
测试代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;
namespace RegExTester
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Parse(txtStringToBeParsed.Text);
}
void Parse(String inputString)
{
Regex r;
Match m;
Int32 startpos = 0, len = 0;
bool IsFirst;
string rstr = txtPatten.Text;
//string rstr = "href\\s*=\\s*(?:\"(?<1>[^\"]*)\"|(?<1>\\S+))";
//"(?<!\\r)\\n";
r = new Regex(rstr,
RegexOptions.IgnoreCase | RegexOptions.Compiled);
IsFirst = true;
txtParseResult.Text = "";
for (m = r.Match(inputString); m.Success; m = m.NextMatch())
{
if (IsFirst == true)
{
startpos = m.Groups[1].Index;
len = m.Groups[1].Length;
IsFirst = false;
}
//textBox2.Text = textBox2.Text +
//"Found : " + m.Groups[1].Value + " at "
// + m.Groups[1].Index + " with length " + m.Groups[1].Length + "\r\n"
// + "Whole: " + m.Value + "\r\n";
txtParseResult.Text = txtParseResult.Text + "[" + m.Value +"]" + "\r\n";
}
//select the first match string
txtStringToBeParsed.Select(startpos, len);
txtStringToBeParsed.Focus();
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
- 用正则表达式解析IPv4和IPv6地址字符串
- 检查IPv4和IPv6地址的正则表达式
- 检查IPv4和IPv6地址的正则表达式
- IP地址(IPv4)/IPv6地址的正则表达式
- ip地址检查正则表达式 兼容ipv4,ipv6
- JS及java验证 IPV6,IPV4地址的 正则表达式
- IPv4地址和IPv6地址
- ipV4地址正则表达式
- IPv4地址正则表达式
- 用正则表达式匹配IPV4地址
- IPv4 地址匹配 正则表达式
- c#正则表达式 ipv4地址
- 4.IPv4和IPv6地址长度
- JS校验合法IP的正则表达式(包括IPV4和IPV6)
- IPV4、IPV6 地址结构
- IPV4与IPV6地址
- IPv4与IPv6地址
- 怎样用正则表达式匹配IPV4地址
- VBS 数组
- linux gdb调试core文件
- 输入设备配置文件(.idc文件)
- 如何成为一位"首席数据官"
- uva 784 - Maze Exploration
- 用正则表达式解析IPv4和IPv6地址字符串
- 提高android程序性能的十大要点
- radiobutton赋选中值
- 让windows2008的iis7.0启用在服务器端的包含文件,支持shtml的SSI
- 使用用sudo时提示"### is not in the sudoers file. This incident will be reported.
- Fish Li 的一年博客总结
- iostat 详解
- 自卑 自负 自信
- GridView中包含EditText的焦点获取