0

我正在使用这个正则表达式

var str = "The requirements of this chapter apply to the following: (1)New buildings or portions thereof used as health care occupancies (see 1.4.1) (2)Additions made to, or used as, a health care occupancy (see 4.6.6 and 18.1.1.4) Exception: The requirement of 18.1.1.1.1 shall not apply to additions classified as occupancies other than health care that are separated from the health care occupancy in accordance with 18.1.2.1(2) and conform to the requirements for the specific occupancy in accordance with Chapters 12 through 17 and Chapters 20 through 42, as appropriate. (3)Alterations, modernizations, or renovations of existing health care occupancies (see 4.6.7 and 18.1.1.4) (4)Existing buildings or portions thereof upon change of occupancy to a health care occupancy (see 4.6.11) Exception*: Facilities where the authority having jurisdiction has determined equivalent safety has been provided in accordance with Section 1.5.";
str = str.replace(/(\(\d+\)|exception\s*\:*)/gi, "<br /><br />$1&nbsp");

我在哪里得到这样的输出

18.1.1.1.1 本章要求适用于:

(1) 用作医疗保健场所的新建筑物或其部分(见 1.4.1)

(2) 增加或用作医疗保健用房(见 4.6.6 和 18.1.1.4)

例外:18.1.1.1.1 的要求不适用于按照 18.1.2.1 与医疗保健占用分开的医疗保健以外的占用

(2) 并酌情符合第 12 章至第 17 章和第 20 章至第 42 章的特定占用要求。

(3) 现有医疗保健场所的改建、现代化或翻新(见 4.6.7 和 18.1.1.4)

(4) 现有建筑物或其中的部分更改为医疗保健占用(见 4.6.11)

但我想要的输出是

18.1.1.1.1 本章要求适用于:

(1) 用作医疗保健场所的新建筑物或其部分(见 1.4.1)

(2) 增加或用作医疗保健场所(见 4.6.6 和 18.1.1.4)(2) 并符合第 12 章至第 17 章和第 20 章至第 42 章对特定场所的要求,作为适当的。

例外:18.1.1.1.1 的要求不适用于按照 18.1.2.1 与医疗保健占用分开的医疗保健以外的占用

(3) 现有医疗保健场所的改建、现代化或翻新(见 4.6.7 和 18.1.1.4)

(4) 现有建筑物或其中的部分更改为医疗保健占用(见 4.6.11)

在这里,它再次打破了(2)这个值的行“(见 4.6.6 和 18.1.1.4)(2) ”。我怎样才能得到这种格式?

4

4 回答 4

0

在您的正则表达式中,尝试只拆分\(\d)\前面有空格的 s :

str = str.replace(/(\s\(\d+\)|exception\s*\:*)/gi, "<br /><br />$1&nbsp");
于 2013-04-09T15:18:12.810 回答
0

在括号中的数字之前寻找不是结束括号的东西。您必须在异常部分伪造它。我决定在“例外”一词之前找到一个非字母顺序。这确保了它是一个完整的词,至少在前面。(不过,公平地说,我想不出一个以“表达”结尾的英文单词。)

请注意 JavaScript 如何通过正则表达式中括号的顺序而不是括号的顺序对匹配的字符串进行编号,因为匹配器会查找匹配的内容。所以不匹配的部分(因为或)仍然计入 $1、$2、$3 和 $4。

str = str.replace(/([^)])(\(\d+\))|([^a-zA-Z])(exception\s*\:*)/gi, "$1$3<br /><br />$2$4&nbsp");

您可以在这里测试 Javascript 正则表达式:http ://www.regexplanet.com/advanced/javascript/index.html

(这就是我为使该表达式起作用所做的工作。)

于 2013-04-09T15:19:19.937 回答
0

你可以合并(?:\(\d+\))*到你的正则表达式中,除非我错过了你所追求的?

于 2013-04-09T15:19:49.483 回答
0

使用

str = str.replace(/(\(\d+\)|exception\s*\:*)(\S)/gi, "<br /><br />$1&nbsp;$2");

它似乎工作:见http://jsbin.com/otuteh/1/edit

于 2013-04-09T15:22:08.863 回答