簡體   English   中英

Javascript RegExp 驗證字符串以 html 打開標簽 + 除標簽外的任何內容結束

[英]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');
  1. 我將一個變量“anyOpenTag”設置為一個正則表達式,以驗證它是否是一個開放標簽,如( <p><div><span>等...

  2. 我將變量“anyCloseTag”設置為正則表達式,以驗證它是否是結束標記,例如( </p></div>等...)

  3. 我設置了一個變量“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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM