[英]Javascript RegExp verify string finishes with html open tag + anything but a tag
我想驗證一個字符串是否以任何打開的標簽結尾,后跟或不跟一個文本
例如:
<div>some text here
或者
<span>some text here
應該匹配
但
<div>some text here</div>
或者
<h1>some text here</h1>
不應該
我試圖想出一個解決方案(對不起,我不是正則表達式專家)
let anyOpenTag = '<([^/>][^>])*>';
let anyCloseTag = '</[^/>][^>]*>';
let neitherOpenNorCloseTag = `[^(${anyOpenTag}|${anyCloseTag})]`;
let regex = new RegExp(
escapeRegExp(`${anyOpenTag}${neitherOpenNorCloseTag}*$`),
'gi');
我將一個變量“anyOpenTag”設置為一個正則表達式,以驗證它是否是一個開放標簽,如( <p>
、 <div>
、 <span>
等...
我將變量“anyCloseTag”設置為正則表達式,以驗證它是否是結束標記,例如( </p>
、 </div>
等...)
我設置了一個變量“neitherOpenNorCloseTag”,試圖將兩者結合起來,並使用 [^....] 檢查它是否不是其中之一
最后我檢查正則表達式是否匹配 anyOpenTag + noneOpenNorCloseTag
不幸的是,它對我不起作用,正是驗證“neitherOpenNorCloseTag”的部分
感謝您的幫助,即使您有更好的正則表達式,我也將不勝感激
根據您的示例,此代碼段有效:
const regex = /<.*>.*<\\/.*>/g const regexString = (regex) => { return (s) => { return !s.match(regex) } } const validateString = regexString(regex) const strings = [ '<div>some text here', '<span>some text here', '<div>some text here</div>', '<h1>some text here</h1>', ] const validated = strings.map(validateString) console.log('Result:', validated)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.