1. 程式人生 > >正則獲取img的src和其他屬性

正則獲取img的src和其他屬性

var reg = /<img src="(.*?)" dataUrl="(.*?)">/ig;
var needHtml = html.replace(reg, '$2')

div編輯器上傳圖片:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

	<head>

		<meta http-equiv="Content-Language" content="zh-cn" />

		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

		<title>DIV可編輯框滑鼠游標處插入圖片或者文字。</title>

		<script type="text/javascript" src="http://www.w3school.com.cn/jquery/jquery.js"></script>

		<script type="text/javascript">
			/**
			 * 自定義編輯器
			 * @param {Object} id      編輯區
			 * @param {Object} control 操作區
			 */
			function insertImg(id,control){
				this.bigBox  = document.getElementById(id);
				this.handles = document.getElementById(control);
				this.handle  = this.handles.children[0];
				this.gethtml = this.handles.children[1];
				this.init();
			}
			insertImg.prototype = {
				init:function(){

					this.edit(); //編輯操作
					this.getResult(); //編輯操作
					
				},
				pasteHandler:function() {
					var that = this;
					/**
					 * 監控貼上(ctrl+v),貼上過來的替換多餘的html程式碼,只保留<br>
					 */
					setTimeout(function() {
						
						var content = that.innerHTML;
						valiHTML = ["br"];
						content = content.replace(/_moz_dirty=""/gi, "").replace(/\[/g, "[[-").replace(/\]/g, "-]]").replace(/<\/ ?tr[^>]*>/gi, "[br]").replace(/<\/ ?td[^>]*>/gi, "  ").replace(/<(ul|dl|ol)[^>]*>/gi, "[br]").replace(/<(li|dd)[^>]*>/gi, "[br]").replace(/<p [^>]*>/gi, "[br]").replace(new RegExp("<(/?(?:" + valiHTML.join("|") + ")[^>]*)>", "gi"), "[$1]").replace(new RegExp('<span([^>]*class="?at"?[^>]*)>', "gi"), "[span$1]").replace(/<[^>]*>/g, "").replace(/\[\[\-/g, "[").replace(/\-\]\]/g, "]").replace(new RegExp("\\[(/?(?:" + valiHTML.join("|") + "|img|span)[^\\]]*)\\]", "gi"), "<$1>");
	
						if(!$.browser.mozilla) {
	
							content = content.replace(/\r?\n/gi, "<br>");
	
						}
	
						that.innerHTML = content;
					}, 1)
				},
				_insertimg:function(str) {
					/*
					 * 鎖定編輯器中滑鼠游標位置。
					 */
					var selection = window.getSelection ? window.getSelection() : document.selection;

					var range = selection.createRange ? selection.createRange() : selection.getRangeAt(0);
	
					if(!window.getSelection) {
	
						this.bigBox.focus();
	
						var selection = window.getSelection ? window.getSelection() : document.selection;
	
						var range = selection.createRange ? selection.createRange() : selection.getRangeAt(0);
	
						range.pasteHTML(str);
	
						range.collapse(false);
	
						range.select();
	
					} else {
	
						this.bigBox.focus();
	
						range.collapse(false);
	
						var hasR = range.createContextualFragment(str);
	
						var hasR_lastChild = hasR.lastChild;
	
						while(hasR_lastChild && hasR_lastChild.nodeName.toLowerCase() == "br" && hasR_lastChild.previousSibling && hasR_lastChild.previousSibling.nodeName.toLowerCase() == "br") {
	
							var e = hasR_lastChild;
	
							hasR_lastChild = hasR_lastChild.previousSibling;
	
							hasR.removeChild(e)
	
						}
	
						range.insertNode(hasR);
	
						if(hasR_lastChild) {
	
							range.setEndAfter(hasR_lastChild);
	
							range.setStartAfter(hasR_lastChild)
	
						}
	
						selection.removeAllRanges();
	
						selection.addRange(range)
	
					}

				},
				enterkey:function() {
					/*
					 * 監控按enter鍵和空格鍵,如果按了enter鍵,則取消原事件,用<BR/ >代替。
					 */
					e = event.keyCode;
					
					if(e == 13 || e == 32) {
	
						var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
	
						event.returnValue = false; // 取消此事件的預設操作 
	
						if(document.selection && document.selection.createRange) {
	
							var myRange = document.selection.createRange();
	
							myRange.pasteHTML('<br />');
	
						} else if(window.getSelection) {
	
							var selection = window.getSelection();
	
							var range = window.getSelection().getRangeAt(0);
	
							range.deleteContents();
	
							var newP = document.createElement('br');
	
							range.insertNode(newP);
	
						}
	
					}
				},
				edit:function() {
					//複製貼上以及回車換行操作
					this.bigBox.onkeydown = this.enterkey;
					this.bigBox.onpaste = this.pasteHandler;
					//插入圖片
					var that = this;
					this.handle.onclick = function() {
						that.bigBox.focus();
						var img_url = "<img src='./img/l.jpg' dataUrl='./A'>";
						that._insertimg(img_url);
					}
				},
				getResult:function() {
					//獲取需要的結果
					var that = this;
					this.gethtml.onclick = function() {
						$(that.bigBox).find('br').remove(); //去除br
						var html = $.trim(that.bigBox.innerHTML);
						//正則修改img為自己想要的格式
						var reg = /<img src="(.*?)" dataUrl="(.*?)">/ig;
						//需要提交的內容
						var needHtml = html.replace(reg, '##@
[email protected]
##') } } } </script> <style type="text/css"> .editbox { width: 400px; height: 200px; border: 1px solid #000; overflow-x: hidden; overflow-y: auto; outline: none; } .imgbox{ width: 100px; } .editbox img { margin: 0 3px; width: 100px; display: inline; } </style> </head> <body> <div id="testdiv" contenteditable="true" class="editbox">可以在任意文字後面插入圖片或者文字哦!</div> <div id="handle"> <a href="javascript:void(0)" class="imgbox">插入</a> <div class="getText"> 獲取文字 </div> </div> <script type="text/javascript"> $(function() { /** * 初始化 insertImg */ var insertImgs = new insertImg('testdiv','handle'); }) </script> </body> </html>

相關推薦

獲取img的src其他屬性

var reg = /<img src="(.*?)" dataUrl="(.*?)">/ig; var needHtml = html.replace(reg, '$2')div編輯器上傳圖片:<!DOCTYPE html PUBLIC "-//W3C//

Js 利用表達式replace函數獲取string中所有被匹配到的文本

利用 str 正則表達 mat 則表達式 ole 括號 替換 字符串 js的replace函數除了替換文本以外還有獲取所有被正則表達式匹配到的文本的功能。這裏以一個簡單的案例來作為演示。 利用正則查找出所有被兩個花括號包裹的字符串: var str = <div cl

html5表單pattern屬性配合驗證電話手機號碼

[b]正則解析[/b] “^\d+$”  //非負整數(正整數 + 0) “^[0-9]*[1-9][0-9]*$”  //正整數 “^((-\d+)|(0+))$”  //非正整數(負整數 + 0) “^-[0-9]*[1-9][0-9]*$”  //負整數 “^-?\d+$”    //整數 “^\d+(

python通過獲取字符串指定開頭結尾的中間字符串的代碼

關於 def start 正則 pat 取字符串 tar 中間 middle 下面的代碼是關於python通過正則獲取字符串指定開頭和結尾的中間字符串的代碼,應該能對各位朋友有些好處。 def GetMiddleStr(content,startStr,endStr):

表達式sed的使用

正則表達式和sed的使用1 字符串的組合表達有重復和邏輯兩種方法2 重復* 零次或多次匹配前面的字符或子表達式+ 一次或多次匹配前面的字符或子表達式? 零次或一次匹配前面的字符或子表達式3 用法格式:grep ’字符串如se*’ 表名或文檔名4 註意1加號和問號前面一定要加斜線如’se\+’和

使用表達式indexof驗證及識別郵箱類型

tle .get else if 進行 value ins har 163郵箱 panel <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/htm

表達式grep

表達式 color 字母 牟定 單詞 正則表達式分為兩類:基本正則表達式和擴展正則表達式。基本正則表達式元字符: 字符匹配: .:匹配任意一個字符。 []:匹配[]中指定範圍內的任意一個字符。 [^]:指定範圍外的任意一個字符;也可以得知,在[]括號內,^表示取反。

表達式decimal format的實際項目運用

return except view 自動化 log class null 必須 讀取 最近review測試框架底層代碼,一是看看有哪些可以重構的,以便減少冗余增加重用,二是優化一下代碼結構增強代碼的健壯性。 其中有一個地方印象比較深刻,特記錄分享如下: 背景:在電商場景中

Python基礎----表達式re模塊

去除 [ ] 在一起 asd 編程語言 strong 優先級 詳細說明 call 正則表達式 就其本質而言,正則表達式(或 re)是一種小型的、高度專業化的編程語言,(在Python中)它內嵌在Python中,並通過 re 模塊實現。正則表達式模式被編譯成一系列的字節碼,

表達式re模塊

arch imp 模式 ret tor 元字符 進行 -h pat 正則表達式和re模塊 1、正則表達式 (1)定義:匹配字符串內容的一種規則。正則表達式是對字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個“規則字符串”,這個“規則字

python3 匹配[^abc](?!abc)的區別(把多個字符作為一個整體匹配排除)

mat obj python str 效果 目的 str1 排除 blog 目的:把數字後面不為abc的字符串找出來 如1ab符合要求,2abc不符合要求 1 str = ‘1ab‘ 2 out = re.match(r‘\d+(?!abc)‘,str) 3 4

【copy】必備之常用表達式 By 其他博主

包含 其他 意義 exp target 特殊 浮點 net 測試工具 熟練而優雅的使用正則,對於程序員來講,實在太有意義了(即便非此類者,也是好處多多);它輔助處理復雜的文本查詢和字符串操作,不僅能用之於代碼,還能雅之於編輯器,瀏覽器,Terminal等,實在是編碼居家必備

python網絡爬蟲-表達式BeautifulSoup

python www. dns pytho .com .html soup jin dnn ilaiut澇脊贅沙級撇http://www.docin.com/app/user/userinfo?userid=179057661ldn5ng押靨撓被槳映http://shufa

day19——常用表達式、re對象匹配效率比較、編譯對象

import com pattern ima 優先 打印 來看 image python 正則網站:regex101.com 在了解re模塊之前,我們可以先了解一下正則表達式,正則表達式在很多語言中都有使用,但是不同的語言直接又有有些細小的區別,下面我們就來列舉一下

編程語言和shell編程的基礎內容以及grep、egrep命令及相應的表達式用法

編程語言和shell編程的基礎內容以及grep、egrep命令及相應的正則表達式和用法bash的特性之多命令執行的邏輯關系: 1.命令替換(命令之間無明確的邏輯依賴關系) COMMAND1 $(COMMAND2) 2.管道(命令之間無明確的邏輯依賴關系) COMMAND1 | COMMAND2

python在linuxwindows的區別

inux windows win tex window re.sub 不能 linu 正則 windows:text = re.sub(‘本題[&\^]{0,4}分數[*\^&]{0,4}\d+?[*\^&]{0,4}分|【\^?獨家提供\^?QQ9

表達式擴展表達式

技術 文本搜索工具 ring pos 在一起 grep -w 並排 十進制 關系 一. 正則表達式 1. grep 文本過濾(模式:pattern)工具 : 作用:文本搜索工具,根據用戶指定的“模式”對目標文本逐行進行匹配檢

基礎表達式擴展表達式

Linux正則表達式基礎正則表達式: ^ 第1個符號 ,以什麽什麽開頭 ^m $ 第2個符號,以什麽什麽結尾 m$ ,還表示空行,或空格,可以用cat -An 試一下 ^$ 第3個符號,空行 什麽符號都沒有 . 第4個符號,表示任意 “一個字符” \ 第5個符號, 轉義字符不解析特

jmeter手寫腳本,使用獲取cookie(禁用cookies管理器)

coo inf 手動 全局 其他 去掉 bugfree 因此 頭信息 註:這裏以bugfree為例 1.bugfree登錄時會有重定向,這會導致每個URL都會有。因此要手動獲取cookie的時候,需要去掉重定向勾選 正則獲取動態PHPsession 獲取到值後,放到信

表達式擴展表達式

print 編輯模式 文件 font 元字符 打開文件 三種 正則表達 空白 1:通配符,匹配的是文件名的字符串, 正則表達式,匹配的是文內容的字符2:正則表達式 基本正則表達式 :BRE擴展正則表達式:ERE 元字符分類:字符匹配,匹配次數,位置錨定,分組 ma