java正则获取url参数判断一段字符是否有url时截止到中文字符前

匹配字符间含有空格的网址的正则表达式如何修改,_百度知道
匹配字符间含有空格的网址的正则表达式如何修改,
如,[WwWw]{3}[\\.。.、()][QqQq][55⑤⑸五][\\.。.、()][CcCc][OoOo][MmMm],怎么才能匹配字符间含有空格的网址...
如,[WwWw]{3}[\\.。.、()][QqQq][55⑤⑸五][\\.。.、()][CcCc][OoOo][MmMm],怎么才能匹配字符间含有空格的网址
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
癫ω倒④ゞ
癫ω倒④ゞ
采纳数:488
获赞数:1264
网址都是进行urlEncode的
每个空格都会被编码成+所以只要检查字符间是否存在加号就好了
其实是为了删除文中的网址推广
空格的话可以用\s表示空白符(包括空格\t\r\n)... 如果是论坛数据库的话可能要用 来过滤这个就看具体上下文环境吧
\s 会把空格前后作为两个部分,不是数据库,只是删除文本罢了
唔。。用空格和可能出现字符的组合就好了。。 没有必要按照顺序去强行匹配吧类似
[所有可能出现的字符\s]+ 再进行手动过滤
采纳数:600
获赞数:559
网址中间不允许有空格
其实是为了删除文中的网址推广
你不如先URL decode, 再用正则把不要的清除掉,然后再编码回去
采纳数:11
(?i)(([\s*http]*[\s*s]?)\s*:\s*\/\s*\/)?(\s*w\s*w\s*w\s*\.)?[\w(\s)?]+\s*\.\s*(c\s*o\s*m|n\s*e\s*t)\s*h t
w. dd.combaidu.comht t p:/ /bai du.comH TTp : / / b a i d u . com
这些都能够匹配但是一般都是匹配标准格式,如果加上区间量词的话,那么你匹配的URL可能不是正确的格式所以要想有正确格式,并且能够兼容空格,据我所知道的,就只有以上表达式。
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。posts - 217,&
comments - 44,&
trackbacks - 0
package com.fsti.icop.util.
import java.util.regex.M
import java.util.regex.P
public final class RegExpValidatorUtils {
* 验证邮箱
* @param 待验证的字符串
* @return 如果是符合的字符串,返回 &b&true &/b&,否则为 &b&false &/b&
public static boolean isEmail(String str) {
String regex = "^([\\w-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$";
return match(regex, str);
* 验证IP地址
* @param 待验证的字符串
* @return 如果是符合格式的字符串,返回 &b&true &/b&,否则为 &b&false &/b&
public static boolean isIP(String str) {
String num = "(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)";
String regex = "^" + num + "\\." + num + "\\." + num + "\\." + num + "$";
return match(regex, str);
* 验证网址Url
* @param 待验证的字符串
* @return 如果是符合格式的字符串,返回 &b&true &/b&,否则为 &b&false &/b&
public static boolean IsUrl(String str) {
String regex = "http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?";
return match(regex, str);
* 验证电话号码
* @param 待验证的字符串
* @return 如果是符合格式的字符串,返回 &b&true &/b&,否则为 &b&false &/b&
public static boolean IsTelephone(String str) {
String regex = "^(\\d{3,4}-)?\\d{6,8}$";
return match(regex, str);
* 验证输入密码条件(字符与数据同时出现)
* @param 待验证的字符串
* @return 如果是符合格式的字符串,返回 &b&true &/b&,否则为 &b&false &/b&
public static boolean IsPassword(String str) {
String regex = "[A-Za-z]+[0-9]";
return match(regex, str);
* 验证输入密码长度 (6-18位)
* @param 待验证的字符串
* @return 如果是符合格式的字符串,返回 &b&true &/b&,否则为 &b&false &/b&
public static boolean IsPasswLength(String str) {
String regex = "^\\d{6,18}$";
return match(regex, str);
* 验证输入邮政编号
* @param 待验证的字符串
* @return 如果是符合格式的字符串,返回 &b&true &/b&,否则为 &b&false &/b&
public static boolean IsPostalcode(String str) {
String regex = "^\\d{6}$";
return match(regex, str);
* 验证输入手机号码
* @param 待验证的字符串
* @return 如果是符合格式的字符串,返回 &b&true &/b&,否则为 &b&false &/b&
public static boolean IsHandset(String str) {
String regex = "^[1]+[3,5]+\\d{9}$";
return match(regex, str);
* 验证输入身份证号
* @param 待验证的字符串
* @return 如果是符合格式的字符串,返回 &b&true &/b&,否则为 &b&false &/b&
public static boolean IsIDcard(String str) {
String regex = "(^\\d{18}$)|(^\\d{15}$)";
return match(regex, str);
* 验证输入两位小数
* @param 待验证的字符串
* @return 如果是符合格式的字符串,返回 &b&true &/b&,否则为 &b&false &/b&
public static boolean IsDecimal(String str) {
String regex = "^[0-9]+(.[0-9]{2})?$";
return match(regex, str);
* 验证输入一年的12个月
* @param 待验证的字符串
* @return 如果是符合格式的字符串,返回 &b&true &/b&,否则为 &b&false &/b&
public static boolean IsMonth(String str) {
String regex = "^(0?[[1-9]|1[0-2])$";
return match(regex, str);
* 验证输入一个月的31天
* @param 待验证的字符串
* @return 如果是符合格式的字符串,返回 &b&true &/b&,否则为 &b&false &/b&
public static boolean IsDay(String str) {
String regex = "^((0?[1-9])|((1|2)[0-9])|30|31)$";
return match(regex, str);
* 验证日期时间
* @param 待验证的字符串
* @return 如果是符合网址格式的字符串,返回 &b&true &/b&,否则为 &b&false &/b&
public static boolean isDate(String str) {
// 严格验证时间格式的(匹配[], [],
// [])不匹配([], [], [04-01-01])
// String regex =
// "^((((19|20)(([0])|([13579][26]))-02-29))|((20[0-9][0-9])|(19[0-9][0-9]))-((((0[1-9])|(1[0-2]))-((0[1-9])|(1\\d)|(2[0-8])))|((((0[13578])|(1[02]))-31)|(((01,3-9])|(1[0-2]))-(29|30)))))$";
// 没加时间验证的YYYY-MM-DD
// String regex =
// "^((((1[6-9]|[2-9]\\d)\\d{2})-(0?[1])-(0?[1-9]|[12]\\d|3[01]))|(((1[6-9]|[2-9]\\d)\\d{2})-(0?[[012])-(0?[1-9]|[12]\\d|30))|(((1[6-9]|[2-9]\\d)\\d{2})-0?2-(0?[1-9]|1\\d|2[0-8]))|(((1[6-9]|[2-9]\\d)(0[48]|[]|[13579][26])|((16|[]|[))-0?2-29-))$";
// 加了时间验证的YYYY-MM-DD 00:00:00
String regex = "^((((1[6-9]|[2-9]\\d)\\d{2})-(0?[1])-(0?[1-9]|[12]\\d|3[01]))|(((1[6-9]|[2-9]\\d)\\d{2})-(0?[[012])-(0?[1-9]|[12]\\d|30))|(((1[6-9]|[2-9]\\d)\\d{2})-0?2-(0?[1-9]|1\\d|2[0-8]))|(((1[6-9]|[2-9]\\d)(0[48]|[]|[13579][26])|((16|[]|[))-0?2-29-)) (20|21|22|23|[0-1]?\\d):[0-5]?\\d:[0-5]?\\d$";
return match(regex, str);
* 验证数字输入
* @param 待验证的字符串
* @return 如果是符合格式的字符串,返回 &b&true &/b&,否则为 &b&false &/b&
public static boolean IsNumber(String str) {
String regex = "^[0-9]*$";
return match(regex, str);
* 验证非零的正整数
* @param 待验证的字符串
* @return 如果是符合格式的字符串,返回 &b&true &/b&,否则为 &b&false &/b&
public static boolean IsIntNumber(String str) {
String regex = "^\\+?[1-9][0-9]*$";
return match(regex, str);
* 验证大写字母
* @param 待验证的字符串
* @return 如果是符合格式的字符串,返回 &b&true &/b&,否则为 &b&false &/b&
public static boolean IsUpChar(String str) {
String regex = "^[A-Z]+$";
return match(regex, str);
* 验证小写字母
* @param 待验证的字符串
* @return 如果是符合格式的字符串,返回 &b&true &/b&,否则为 &b&false &/b&
public static boolean IsLowChar(String str) {
String regex = "^[a-z]+$";
return match(regex, str);
* 验证验证输入字母
* @param 待验证的字符串
* @return 如果是符合格式的字符串,返回 &b&true &/b&,否则为 &b&false &/b&
public static boolean IsLetter(String str) {
String regex = "^[A-Za-z]+$";
return match(regex, str);
* 验证验证输入汉字
* @param 待验证的字符串
* @return 如果是符合格式的字符串,返回 &b&true &/b&,否则为 &b&false &/b&
public static boolean IsChinese(String str) {
String regex = "^[\u4e00-\u9fa5],{0,}$";
return match(regex, str);
* 验证验证输入字符串
* @param 待验证的字符串
* @return 如果是符合格式的字符串,返回 &b&true &/b&,否则为 &b&false &/b&
public static boolean IsLength(String str) {
String regex = "^.{8,}$";
return match(regex, str);
* @param regex
* 正则表达式字符串
* @param str
* 要匹配的字符串
* @return 如果str 符合 regex的正则表达式格式,返回true, 否则返回
private static boolean match(String regex, String str) {
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
return matcher.matches();
// 3. 检查字符串重复出现的词
// private void btnWord_Click(object sender, EventArgs e)
// System.Text.RegularExpressions.MatchCollection matches =
// System.Text.RegularExpressions.Regex.Matches(label1.Text,
// @"\b(?&word&\w+)\s+(\k&word&)\b",
// System.Text.RegularExpressions.RegexOptions.Compiled |
// System.Text.RegularExpressions.RegexOptions.IgnoreCase);
// if (matches.Count != 0)
// foreach (System.Text.RegularExpressions.Match match in matches)
// string word = match.Groups["word"].V
// MessageBox.Show(word.ToString(),"英文单词");
// else { MessageBox.Show("没有重复的单词"); }
// 4. 替换字符串
// private void button1_Click(object sender, EventArgs e)
// string strResult =
// System.Text.RegularExpressions.Regex.Replace(textBox1.Text,
// @"[A-Za-z]\*?", textBox2.Text);
// MessageBox.Show("替换前字符:" + "\n" + textBox1.Text + "\n" + "替换的字符:" + "\n"
// + textBox2.Text + "\n" +
// "替换后的字符:" + "\n" + strResult,"替换");
// 5. 拆分字符串
// private void button1_Click(object sender, EventArgs e)
// //实例: 甲025-55-9-89丁
// foreach (string s in
// System.Text.RegularExpressions.Regex.Split(textBox1.Text,@"\d{3,4}-\d*"))
// textBox2.Text+=s; //依次输出 "甲乙丙丁"
阅读(...) 评论()369 条评论分享收藏感谢收起赞同 425 条评论分享收藏感谢收起在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
客户端传过来一段字符串,需要从字符串中匹配出所有的url,包括域名或IP后面的参数(含端口)
http://127.0.0.1/metinfo/img/img.php?class1=1&serch_sql=%201=if%28ascii%28substr%28user%28%29,1,1%29%29=114,1,2%29%23
http://www.baidu.com/metinfo/img/img.php?class1=1&serch_sql=%201=if%28ascii%28substr%28user%28%29,1,1%29%29=114,1,2%29%23
当然简单URL也是要匹配出来的求解正则
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
先用比较宽泛的正则匹配出所有的url,例如
https?:\/\/\S+
然后对于这堆url依次采用parse_url函数
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*$
http://regexlib.com/Search.aspx?k=url&c=-1&m=5&ps=20
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
Java 大概这么写
String str = "接收到的字符串"
String regex = "(http:|https:)//[^[A-Za-z0-9,:\\._\\?%&+\\-=/#]]*";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
String url=matcher.group();
System.out.println(url);
以下字符串通过测试.
String str="http://127.0.0.1:6666/ " +
"https://www.baidu.com/ " +
"http://127.0.0.1/metinfo/img/img.php?class1=1&serch_sql=%201=if%28ascii%28substr%28user%28%29,1,1%29%29=114,1,2%29%23\n" +
"或者\n" +
"哈哈http://www.baidu.com:85676/metinfo/img/img.php?class1=1&serch_sql=%201=if%28ascii%28substr%28user%28%29,1,1%29%29=114,1,2%29%23 6666都是对的";
http://127.0.0.1:6666/
https://www.baidu.com/
http://127.0.0.1/metinfo/img/img.php?class1=1&serch_sql=%201=if%28ascii%28substr%28user%28%29,1,1%29%29=114,1,2%29%23
http://www.baidu.com:85676/metinfo/img/img.php?class1=1&serch_sql=%201=if%28ascii%28substr%28user%28%29,1,1%29%29=114,1,2%29%23
什么,你问的式PHP?抱歉,我不会PHP。。。正则一样的,自己动动脑袋吧。
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。获取 string里面的第一个url
+ (NSString *)getFirstUrlFromString:(NSString *)searchText {
NSRange range = [searchText rangeOfString:@"((http[s]{0,1}|ftp)://[a-zA-Z0-9\\.\\-]+\\.([a-zA-Z]{2,4})(:\\d+)?(/[a-zA-Z0-9\\.\\-~!@#$%^&*+?:_/=&&]*)?)|(www.[a-zA-Z0-9\\.\\-]+\\.([a-zA-Z]{2,4})(:\\d+)?(/[a-zA-Z0-9\\.\\-~!@#$%^&*+?:_/=&&]*)?)" options:NSRegularExpressionSearch];
if (range.location != NSNotFound) {
NSString *url = [searchText substringWithRange:range];
if (!([[url hasPrefix:@"http://"] || [url hasPrefix:@"https://"])) {
url = [@"http://" stringByAppendingString:url];
需要注意的是如果地址后面和文字太近了可能识别出问题 http://baidu.comhello 这时候识别的就是 http://baidu.comhello 而不是需要的 http://baidu.com,所以如果有一个空格或者其他不在表达式里的符号就可以分隔开了
正则表达式获取URL中的域名
正则:(http|https)://(www.)?(\w+(\.)?)+
测试1:https://www.amazon.co.uk/Wireless-iClever-Bluetooth-Backli...
js利用正则表达式筛选并获取字符串中的URL链接(只是筛选完整URL,单独域名不筛选)
欢迎来到Altaba的博客
日 有时候我们某些营销活动需要捕获用户输入的短信内容,内容中如果用户输入的某些链接,我们后台捕获通过运营商发送的时候是需要用新的配置好的链接(假设配置...
正则表达式识别字符串中的URL
一般我们经常看到一些在帖子或者别人的文章里,文字中间还会夹带着很多的网址还有URL而且URL还是可以点击进去的;还有另外一个较常用到的地方就是聊天系统中识别对话的URL,废话不多说,入正题请看下面的代...
正则表达式,从一个字符串中提取链接地址
写出正则表达式,从一个字符串中提取链接地址。比如下面字符串中
“IT面试题博客中包含很多
软件测试面试题 ”
则需要提取的地址为 “http://www.mianwww.com/html/...
通过正则表达式获取标准url地址的域名和文件后缀名
形如“http://www.abcdef.com/index.php”或“http://www.abcdef.com/index.php?g=Index&m=Index&a=index”的地址即为标准...
正则表达式匹配域名、网址、url
DNS规定,域名中的标号都由英文字母和数字组成,每一个标号不超过63个字符,也不区分大小写字母。标号中除连字符(-)外不能使用其他的标点符号。级别最低的域名写在最左边,而级别最高的域名写在最右边。由多...
java通过正则表达式匹配获取链接地址
获取页面中字符串的url地址我们都会使用正则表达式来匹配获取了,下面我来给大家总结几个匹配获取链接地址示例。
1、正则表达式中Matcher中find()方法的应用。
2、String...
根据地址截取省市区,正则表达式
public class AddressResolution {
* 解析地址
* @author liuj
* @param address
java在字符串中获取满足正则表达式的字符
最近在做爬虫,需要获取文章的基本信息,时间和来源是一起的.
所以就想到用正则表达式提取这段字符串中的时间.
import java.util.regex.M
java正则表达式提取URL
package spider4;import java.util.HashS
import java.util.I
import java.util.S
import ja...
没有更多推荐了,

我要回帖

更多关于 php正则匹配url 的文章

 

随机推荐