对我来说,这似乎是一个XY 问题。
您想要做的是防止时间与其 AM/PM 指示符分开。与其尝试修复脚本,不如更改内容本身,以便在时间和指示符之间出现不间断的空格:
例如:
8:00 AM
这将允许内容流畅地填充其容器,而无需使用换行符将时间与指示符分开。
如果内容本身是为了保留空格(因此是换行符),那么内容的样式应该具有:
在 CSS 中:
white-space: pre;
或包含在一个<pre>
元素中。
或者,如果内容不是预先格式化的,但应该总是分成多行,<br>
则应该使用一个元素:
Fri Nov 5<br>11:11 AM
在这种特殊情况下,我建议使用
实体而不是<br>
元素,因为该<br>
元素用于表示需要多行的内容,例如诗歌或<address>
.
如果您无法从服务器更改文本的格式,则可以使用.replace
相对轻松地插入不间断空格字符:
newStr = yourStr.replace(/(\d\d) ([AP]M)/g, '$1 $2');
以下是模式的细分:/(\d\d) ([AP]M)/g
- RegExp 文字由
/
字符分隔
- parens 用于捕获字符组,替换字符串中的
$1
and$2
引用捕获的字符。
\d\d
用于匹配两个连续的数字,代表时间中的分钟。
- 空格用于匹配分钟和 AM/PM 指示符之间的空格。
\s+
如果 HTML 内容中有多个空格字符,您可能需要使用。
[AP]
用于匹配A
orP
字符
[AP]M
匹配AM
或PM
. 这也可以写成 (AM|PM)
- 该
g
标志用于告诉在字符串中找到的每个匹配项都发生替换。