需要关于我的javascript正则表达式的帮助

时间:2018-03-28 13:42:02

标签: javascript regex

我目前正在尝试匹配HTML文本中的所有字词,并将每个字词包装在<span>代码中。

我的问题是当一个单词有一个尾随撇号时,如下面的文字小节所示:

seconds’

尾随撇号部分未匹配。

我需要将尾随的'字符作为单词的一部分。

这是我试过的正则表达式:

([^\r\—>< \/]+(?!\>))(\b)

enter image description here是我的在线测试。

3 个答案:

答案 0 :(得分:0)

我提出了一些与你的例子中的所有单词完全不同的东西:

<EditText android:hint="xyzz" android:inputType="phone" android:id="@+id/num" android:textColorHint="#000000" android:layout_gravity="start" android:textAlignment="viewStart" android:textDirection="rtl" android:layout_height="fill_parent" android:gravity="center_vertical" android:layout_width="match_parent" tools:ignore="RtlCompat" />

此正则表达式有2个匹配的组,您需要的是第一组中的结果(([\w’]+?)([\s—,]|<br>)部分)。它匹配任何单词字符(([\w’]+?))或\w字符。您可以在此处添加要包含的任何其他字符。

第二组用作分隔符。它匹配任何空白字符(),\s,或字符串。您可以在此处添加所需的任何分隔符。

在这里它正在行动,打印你的例子的每个字:

&#13;
&#13;
<br>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

问题\b量词将匹配非字母数字,然后反引号是边框。您可以更改一个可选的反引号,然后下一个空格成为边框。 Like this (([^\r\—>< \/])+(?!\>))(?=\b)[’]?

有关ECMAScript中\b的更多信息,请查看ECMAScript specMDN Documentation

答案 2 :(得分:0)

您可以使用\b来模拟(?=[\s—-])行为:

([^\r\—>< \/]+(?!\>))\/]+(?!\>))(?=[\s—-])

demo.

[^<>,\s—]+?(?!>)(?=[\s—,])工作正常on your test。您可能需要更新最后一个前瞻以满足您的需求。