【发布时间】:2017-04-18 10:00:44
【问题描述】:
单击表格中的值时,我正在向文本区域添加字符串。必须可以选择和取消选择表格中的值,并且它们将从文本区域中添加/删除自己。 textarea 必须是字符串,并且添加的值不能被任何其他字符包裹。
正在添加的值可能包含任何字符,并且可能包含其他值之一作为子字符串,以下是一些示例:HOLE 1、HOLE 11、HOLE 17、HOLE (1) 、cutaway、cut、away、cut-away、Commentator (SMITH, John)、(GOAL)、GOAL
一旦一个值被附加到文本区域,并且再次单击它以取消选择它,我正在搜索该值并将其删除,如下所示:
var regex = new RegExp("(?![ .,]|^)?(" + mySelectedText + ")(?=[., ]|$)", 'g');
var newDescriptionText = myTextAreaText.replace(regex, '');
正则表达式正确匹配文本的字符串/子字符串,例如cutaway 和 away 但不适用于以括号开头的任何内容,例如(GOAL)。将单词边界选择器添加到表达式 \b 的开头,将使正则表达式匹配以括号开头的字符串,但不适用于包含相同文本的字符串/子字符串。
有没有办法使用正则表达式来实现这一点?还是其他方法?
这是从表中添加/删除的工作 CodePen example。
【问题讨论】:
-
你做错了。为什么不将选定的值保留在
array中,并在值更改时根据该值刷新textarea的内容? -
我也在考虑这个,但用户也可以在框中输入,例如“看看
HOLE 1现在看看HOLE 11等等等等”,但是在打字的中途他们可以点击HOLE 1并删除它,尽管再想一想我可能会存储一个包含字符串的对象数组自身及其在 textarea 中的当前起始位置
标签: javascript regex string