正则表达式截取字符串判断字符串是否为十六进制

拒绝访问 | www.wangchao.net.cn | 百度云加速
请打开cookies.
此网站 (www.wangchao.net.cn) 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(3e4f5b3df40d4cd8-ua98).
重新安装浏览器,或使用别的浏览器10477人阅读
Android开发(50)
算法设计(79)
Java开发(26)
&&&&&&今天Boss给了一个小任务,要求给定一个字符串,判断该字符串是否是MAC地址,并用Java和正则表达式实现。于是我顺便百度了下MAC地址,并在cmd下使用getmac获取本机的MAC地址,了解了一点后,就用Java实现了。为了方便测试与输入输出,选择使用Android作为UI交互。反正都是用Java,对于这个问题,一个Java项目和Android区别不大。&&&&&&&首先看一个MAC地址:48-5D-60-61-3D-C5。其中由6个字节(十六进制)组成,简单理解为数字、大小写字母(a-fA-F)、短横线-组成。废话不说,先写MAC的正则表达式,我总共写了3个正则表达式,是不断优化的结果。正则表达式:(1)&[A-Fa-f0-9][A-Fa-f0-9]-[A-Fa-f0-9][A-Fa-f0-9]-[A-Fa-f0-9][A-Fa-f0-9]-[A-Fa-f0-9][A-Fa-f0-9]-[A-Fa-f0-9][A-Fa-f0-9]-[A-Fa-f0-9][A-Fa-f0-9]&这个表达式虽然看起来长,但是是逻辑最简单的,最容易理解的,也是完全正确的。A-F& a-f&& 0-9都表示其中的某一个,中间是“或”的关系。短横线-可以直接进行匹配。(2)&[A-Fa-f0-9]{2}-[A-Fa-f0-9]{2}-[A-Fa-f0-9]{2}-[A-Fa-f0-9]{2}-[A-Fa-f0-9]{2}-[A-Fa-f0-9]{2}&进行优化后,长度剪短了一半。{2}就是把前面的部分循环2次。在第一种方法的基础上,这也是容易理解的。(3)&([A-Fa-f0-9]{2}-){5}[A-Fa-f0-9]{2}&在(2)的基础上继续进行优化。把“[A-Fa-f0-9]{2}-“作为一个单元进行提取。{5}并循环5次,因为面·前面5个都是重复的,有很大压缩的空间。&&&&&&代码编写较为简单,在Android上进行可视化编写:public class MainActivity extends Activity {
private EditText isMAC;
private Button startMAC;
private TextV
private static String judgeMacA
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
isMAC = (EditText) findViewById(R.id.id_edit);
startMAC = (Button) findViewById(R.id.id_btn);
result = (TextView) findViewById(R.id.id_text);
startMAC.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
judgeMacAddress = isMAC.getText().toString();
boolean isMAC = stringIsMac(judgeMacAddress);
if (isMAC) {
result.setText(&这是MAC地址&);
result.setText(&这不是MAC地址&);
private boolean stringIsMac(String val) {
String trueMacAddress = &([A-Fa-f0-9]{2}-){5}[A-Fa-f0-9]{2}&;
// 这是真正的MAV地址;正则表达式;
if (val.matches(trueMacAddress)) {
}(1)(2)(3)最后的实现效果如下:.&&&&&&&至此,已经对MAC地址进行了判断。可能最后的那种正则表达式还有优化的方法,请大家给予批评与建议。
访问:2363659次
积分:29475
积分:29475
排名:第205名
原创:660篇
转载:36篇
评论:526条
文章:24篇
阅读:16880
文章:21篇
阅读:88653
文章:27篇
阅读:97964
文章:11篇
阅读:41463
阅读:83313
文章:60篇
阅读:147226
文章:80篇
阅读:287417
文章:221篇
阅读:864346
文章:51篇
阅读:224975
Android应用:
Github主页:
(4)(9)(13)(2)(5)(4)(1)(7)(10)(7)(5)(4)(7)(7)(5)(15)(4)(8)(10)(4)(24)(29)(10)(22)(33)(106)(130)(79)(132)java 怎么用正则表达式判断一个字符串是否为16进制数,且如果包含字母要转为大写_百度知道
java 怎么用正则表达式判断一个字符串是否为16进制数,且如果包含字母要转为大写
我有更好的答案
println(s;AA&{&public&static&void&main(String[]&123bf&;&&&args)&{&&String&s=&quot.&;&&if(s;System.out.println(s.toUpperCase()+&是16进制数&);&&}else{&&&SString&regex=&^[A-Fa-f0-9]+$&quot.matches(regex)){&nbsp.toUpperCase()+&不是16进制数&);&&}&nbsp用正则表达式判断一个字符串是否为16进制数的Java程序如下(不知道是不是你想要的)public&class&nbsp
在刚才基础上,要判断是否为4位或者7位,请问下该要怎么写呢?
判断是否为4位或者7位十六进制数的Java程序如下public&class&AA&{&public&static&void&main(String[]&args)&{&&String&s=&123b123&;&&String&regex=&^[A-Fa-f0-9]{4}|[A-Fa-f0-9]{7}$&;&&if(s.matches(regex)){&&&System.out.println(s.toUpperCase()+&是4位或者7位16进制数&);&&}else{&&&System.out.println(s.toUpperCase()+&不是4位或者7位16进制数&);&&}&}}运行结果123B123是4位或者7位16进制数
采纳率:66%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。正则表达式判断字符串是否为十六进制_百度知道
正则表达式判断字符串是否为十六进制
从文本读出的字符串中如何识别十六进制数值:
十六进制字符串格式: 0x12, 0x1a, a0, ab
可能包含0x也由可能不包含,如果不包含0x,又不包含a~z/A~Z/0~9那么就认为不是十六进制
下面这样不行:
string pattern = @&\b(0[xX])?[A-Fa-f0-9]+\b&;...
我有更好的答案
正则表达式判断一个字符串是否为16进制数的Java程序如下(不知道是不是你想要的)publicclassAA{publicstaticvoidmain(String[]args){Strings=&Stringregex=&quot.toUpperCase()+&^[A-Fa-f0-9]+$&123bf&.println(s;;if(s.out.matches(regex)){System.out.println(s.toUpperCase()+&是16进制数&);}else{System
这个不能识别是否是0x打头,^定死了是a-z/A-Z/0-9打头的。
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 正则表达式判断字符串 的文章

 

随机推荐