0

ユーザーの名前がLMS(学習管理システム)からHTMLページにどのように取り込まれるかを修正しようとしています。現在、名前と名前には2つの別々の入力があります。ユーザーがミドルネームを追加したいので、次のようにミドルネームを名入力ボックスに追加してもらいました。

名:ジョン・レイ

姓:Doe

名前をHTMLページに取り込むコードは次のようになります。

var strStudentName;

if (typeof opener != "undefined" && typeof opener.LMS_student_name != "undefined" && opener.LMS_student_name != null)
{
    strStudentName = opener.LMS_student_name;
}
else
{
    strStudentName = "the Student";
}

var objRegExp = /(\w+),(\w+)/;
var strReverseName = strStudentName.replace(objRegExp, "$2 $1");

残念ながら、このコードはミドルネームの最後の「JohnDoeRay」を表示します「ジョン・レイ・ドー」を読んでほしい。$2と$1を切り替えると、「Doe John Ray」と表示されます。何をしても、ミドルネームは常に最後になります。

このコードの本来の目的は、LMSが(Doe、John)のように名前を逆方向にデフォルト設定するため、ユーザーの名を最初に置くことでした。

助けてください!ありがとうございました!!

4

3 に答える 3

0

正規表現をアップグレードする必要があります。

var objRegExp = /(\w+),((\w+)(\s\w+))*/;
于 2012-12-11T01:03:17.460 に答える
0

入力データによっては、2番目のキャプチャグループで単語文字を指定する必要がない場合があります。入力が自己完結型の場合/(\w+),(.+)/;は機能します。

ただし、名前の文字列の後に文字が多い場合は、正規表現を正しく指定するために、それらの文字が何であるかについての詳細情報が必要になります。

于 2012-12-11T01:04:26.130 に答える
0

これは、2番目(\w+)が空白とミドルネームをキャプチャしないためです。

var objRegExp = /(\w+),(\w+)(?:\s(\w+))?/;

$3あなたにミドルネームを与えるでしょう。

于 2012-12-11T01:06:15.347 に答える