回答編集履歴
5
追記
test
CHANGED
@@ -84,7 +84,7 @@
|
|
84
84
|
|
85
85
|
const replaced = haystack.replace(reg, (match, prefix, tagging) => `${prefix}<span class="tag">${tagging}</span>`);
|
86
86
|
|
87
|
-
$('#clone').html(replaced.substring(1, replaced.length -
|
87
|
+
$('#clone').html(replaced.substring(1, replaced.length - 1)); // Sep 26, 2:51編集
|
88
88
|
|
89
89
|
}
|
90
90
|
|
4
エスケープ処理に間違いがあったのを修正
test
CHANGED
@@ -80,7 +80,7 @@
|
|
80
80
|
|
81
81
|
const prefixChars = ['、', '。'];
|
82
82
|
|
83
|
-
const reg = new RegExp(`([ \s${prefixChars.join('')}])([##][^\s ]+)`, 'g'); // 1:53修正
|
83
|
+
const reg = new RegExp(`([ \s${prefixChars.join('')}])([##][^\s ]+)`, 'g'); // 1:53修正→Sep 25 18:55再編集
|
84
84
|
|
85
85
|
const replaced = haystack.replace(reg, (match, prefix, tagging) => `${prefix}<span class="tag">${tagging}</span>`);
|
86
86
|
|
3
コメントに対する追記に対するコメントに対する追記の修正
test
CHANGED
@@ -80,7 +80,7 @@
|
|
80
80
|
|
81
81
|
const prefixChars = ['、', '。'];
|
82
82
|
|
83
|
-
const reg = new RegExp(`([ \s${prefixChars.join('')}])([##][
|
83
|
+
const reg = new RegExp(`([ \s${prefixChars.join('')}])([##][^\s ]+)`, 'g'); // 1:53修正
|
84
84
|
|
85
85
|
const replaced = haystack.replace(reg, (match, prefix, tagging) => `${prefix}<span class="tag">${tagging}</span>`);
|
86
86
|
|
2
コメントに対する追記に対するコメントに対する追記
test
CHANGED
@@ -43,3 +43,49 @@
|
|
43
43
|
出先なのでかんたんに画像で恐縮ですが、\rと\nを条件に出したら改行のところも動きませんでしょうか。
|
44
44
|
|
45
45
|
![regex101](5250bbb379db3e1f44a9624e84daffde.png)
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
----
|
50
|
+
|
51
|
+
Sep 22, 2019 1:10追記
|
52
|
+
|
53
|
+
> なぜか「#we」だけがタグ認定されない事態に…
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
なるほどーーーーー、
|
58
|
+
|
59
|
+
` #yes改行#we改行#can ` に対して「前後に改行空白を持つ部分」で取っているので、まず1つ目で「 #yes改行」が取られて、次の#weは前に改行を持っていない(yesに取られた)状態になって、というような感じで、偶数個めが認識されなくなりますね。
|
60
|
+
|
61
|
+
仕様を満たすかどうかは要検証ですがこちらに変えると、ご提示の例では動くかと……
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
```js
|
66
|
+
|
67
|
+
function hash(str) {
|
68
|
+
|
69
|
+
// ・文字列がtextarea先頭の場合、直前のスペースは不要
|
70
|
+
|
71
|
+
// ・文字列がtextarea末尾の場合、直後のスペースは不要
|
72
|
+
|
73
|
+
// の処理を簡単にするために前後に半角スペースを入れる
|
74
|
+
|
75
|
+
const haystack = ` ${str} `;
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
// タグの開始直前に許容する記号の一覧
|
80
|
+
|
81
|
+
const prefixChars = ['、', '。'];
|
82
|
+
|
83
|
+
const reg = new RegExp(`([ \s${prefixChars.join('')}])([##][ \S]+)`, 'g');
|
84
|
+
|
85
|
+
const replaced = haystack.replace(reg, (match, prefix, tagging) => `${prefix}<span class="tag">${tagging}</span>`);
|
86
|
+
|
87
|
+
$('#clone').html(replaced.substring(1, replaced.length - 2));
|
88
|
+
|
89
|
+
}
|
90
|
+
|
91
|
+
```
|
1
改行について追記
test
CHANGED
@@ -33,3 +33,13 @@
|
|
33
33
|
```
|
34
34
|
|
35
35
|
未検証ですがこんな感じではいかがでしょう
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
----
|
40
|
+
|
41
|
+
Sep 21, 2019 19:00追記
|
42
|
+
|
43
|
+
出先なのでかんたんに画像で恐縮ですが、\rと\nを条件に出したら改行のところも動きませんでしょうか。
|
44
|
+
|
45
|
+
![regex101](5250bbb379db3e1f44a9624e84daffde.png)
|